이 질문은 질문 본문에 의해 반박되거나 실제 문제를 다루지 않는 응답을 계속 끌어 들이기 때문에
알아야 할 사항에 대한 간단한 요약 을 읽으십시오 .
- 입니다 하지 는 “왜 PowerShell을 내 기본 설치가 실행되지 않습니다 스크립트?” 질문.
- 입니다 하지 A가 “왜 PowerShell을 실행 스크립트 내 설치가 인터넷에서 다운로드하지?” 질문.
- 문제는
RemoteSigned
실행 정책이 스크립트 실행을 방해하지 않아야하는 이유입니다.RemoteSigned
는 IS 단지 내가 사용하고자하는 실행 정책. 덜 제한적인 다른 정책을 사용할 수 있다는 것을 알고 있습니다. 이러한 정책이 수용 가능한 대체물이라면 대신 사용했을 것이고이 질문은 존재하지 않을 것입니다.- 실행 정책이 이미로 설정되어
RemoteSigned
있습니다. 에서 변경RemoteSigned
하는 것은RemoteSigned
해결책이 아니다.- 스크립트 파일이 생성되고 로컬에 저장됩니다.
- 스크립트 파일은 차단되지 않습니다. 스크립트 파일이 차단되지 않았습니다 (이전 포인트 참조).
- 차단을 해제 할 항목이 없기 때문에 스크립트 파일을 차단 해제 할 수 없습니다 (이전 포인트 참조).
- 스크립트 파일은 관리자가 실행 (실행하려고 시도)합니다.
Windows PowerShell
관련된 유일한 응용 프로그램입니다. 되지Windows PowerShell ISE
도Command Prompt
않고 다른 도구 나 편집자는 관련입니다.- 문제의 원인이 이미 확인되었습니다 (승인 된 답변 참조). 거의 8 년이 지난 후, 적용 가능 여부에 관계없이 다른 모든 명백한 설명도 게시되었다고 생각합니다. 그렇지 않다고 생각 되면 질문과 기존 답변 전체 를 읽고 추가하십시오.
64 비트 Windows 7 Professional에서 Windows PowerShell 2.0을 사용하고 있습니다. Desktop
실행하려고 할 때 다음 오류를 일으키는 스크립트 가 있습니다.
File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
나는 도메인 관리자 및 로컬 관리자 모두 오전, 내가 실행하는 경우 Get-ExecutionPolicy -List
, 나는 것을 볼 수 있습니다 Group Policy Object
구성 PowerShell을하기 위해 만들어 내가 올바르게 적용되는 RemoteSigned
시스템 수준에서 실행 정책을 :
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
나는에 스크립트 나 자신을 생성 Notepad
하고, 사용 시스 인 터널 ‘ streams
유틸리티와 파일 Properties
스크립트가 인터넷에서 오는 것으로 처리하고 있지 않은지 확인하는 대화 상자를. 스크립트를 도메인 서버의 네트워크 공유에 복사하면 실행이 허용됩니다. 실행 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
하면 로컬 스크립트는 여전히 실행이 허용되지 않습니다. 이는 MachinePolicy
범위 의 실행 정책 이 우선 하므로 의미 가 있습니다.
about_Execution_Policies
( current ; at time of question ) 에서 문서화 한대로 RemoteSigned
정책은 다음을 의미합니다.
스크립트를 실행할 수 있습니다.
인터넷에서 다운로드 한 스크립트 및 구성 파일 (전자 메일 및 인스턴트 메시징 프로그램 포함)에 대해 신뢰할 수있는 게시자의 디지털 서명이 필요합니다.
실행 한 스크립트와 로컬 컴퓨터 (인터넷에서 다운로드하지 않음)에서 작성한 스크립트에 디지털 서명이 필요하지 않습니다.
인터넷 이외의 소스에서 서명되지 않은 스크립트와 서명되었지만 악성 스크립트를 실행할 위험이 있습니다.
내 스크립트는 서명되지 않았지만 로컬에서 생성 및 실행되기 때문에 위의 세 번째 글 머리 기호를 충족해야합니다. 따라서…
- 내 스크립트가 실행되지 않는 이유는 무엇입니까?
- 해당 요구 사항이 인터넷의 파일에만 적용되어야하는데 PowerShell에서 내 스크립트가 “디지털 서명되지 않았습니다”라고 불평하는 이유는 무엇입니까?
- PowerShell이 네트워크 공유에서 실행될 때 더 이상 스크립트가 서명되지 않는 것에 대해 신경 쓰지 않는 이유는 무엇입니까?
답변
파일이 차단되고 있습니까? 나는 같은 문제가 있었고 .PS1 파일, 속성을 마우스 오른쪽 버튼으로 클릭하고 차단 해제를 선택하여 해결할 수있었습니다.
답변
확인해야 할 사항 :
무제한으로 변경할 수 있습니까?
Set-ExecutionPolicy Unrestricted
그룹 정책이 설정되어 있습니까?
Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell
User Configuration\Administrative Templates\Windows Components\Windows PowerShell
또한 Script.ps1을 어떻게 호출하고 있습니까?
이것이 실행되도록 허용합니까?
powershell.exe -executionpolicy bypass -file .\Script.ps1
답변
마침내 이것을 .NET Code Access Security 로 추적했습니다 . 네트워크 공유에 저장되고 실행되는 내부 개발 바이너리 모듈이 있습니다. .NET 2.0 / PowerShell 2.0을로드하기 Intranet
위해 해당 디렉터리를 신뢰 하는 URL 규칙을 코드 그룹에 추가했습니다 .
PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -listgroups
Microsoft (R) .NET Framework CasPol 2.0.50727.5420
Copyright (c) Microsoft Corporation. All rights reserved.
Security is ON
Execution checking is ON
Policy change prompt is ON
Level = Machine
Code Groups:
1. All code: Nothing
1.1. Zone - MyComputer: FullTrust
1.1.1. StrongName - ...: FullTrust
1.1.2. StrongName - ...: FullTrust
1.2. Zone - Intranet: LocalIntranet
1.2.1. All code: Same site Web
1.2.2. All code: Same directory FileIO - 'Read, PathDiscovery'
1.2.3. Url - file://Server/Share/Directory/WindowsPowerShell/Modules/*: FullTrust
1.3. Zone - Internet: Internet
1.3.1. All code: Same site Web
1.4. Zone - Untrusted: Nothing
1.5. Zone - Trusted: Internet
1.5.1. All code: Same site Web
설치된 .NET 버전 및 Windows가 32 비트인지 64 비트인지 caspol.exe
에 따라 각각 고유 한 보안 구성 ( security.config
) 을 사용하여 다음 위치에 존재할 수 있습니다 .
$Env:SystemRoot\Microsoft.NET\Framework\v2.0.50727\
$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\
$Env:SystemRoot\Microsoft.NET\Framework\v4.0.30319\
$Env:SystemRoot\Microsoft.NET\Framework64\v4.0.30319\
그룹 삭제 후 1.2.3.
…
PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -remgroup 1.2.3.
Microsoft (R) .NET Framework CasPol 2.0.50727.9136
Copyright (c) Microsoft Corporation. All rights reserved.
The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
yes
Removed code group from the Machine level.
Success
… 기본 CAS 구성이 남아 있으며 이제 로컬 스크립트가 다시 작동합니다. CAS를 수정 한 지 한참 지났는데 내 규칙이 권한 부여를 방해하는 것처럼 보이는 이유가 확실하지 않습니다.FullTrust
을 MyComputer
하지만, 이후 CAS .NET 4.0으로 사용되지 않습니다 (PowerShell을 3.0의 기반이되는), I 이제 논쟁의 여지가있는 것 같아요.
답변
Dropbox에 매핑 된 드라이브의 PS1 파일을 실행할 때 항상이 오류가 발생한다는 사실을 알게되었습니다. PS1의 속성을 열 때 “차단 해제”가 없습니다.
나를 위해 일하는 유일한 것은
powershell.exe -executionpolicy 우회 -file. \ Script.ps1
답변
파일이 네트워크 위치, 즉 다른 컴퓨터에서 복사 된 경우 Windows에서 해당 파일을 차단했을 수 있습니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 차단 해제 버튼을 클릭하고 작동하는지 확인하십시오.
답변
.ps1 PowerShell 스크립트를 실행하면 “.ps1은 디지털 서명이 없습니다.”라는 메시지가 표시 될 수 있습니다. 스크립트는 시스템에서 실행되지 않습니다. ” 이 문제를 해결하려면 아래 명령을 실행하여 Set-ExecutionPolicy를 실행하고 실행 정책 설정을 변경해야합니다.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
답변
이것은 IDE 문제입니다. PowerShell GUI에서 설정을 변경합니다. 도구 탭으로 이동하여 옵션을 선택한 다음 디버깅 옵션을 선택 합니다. 그런 다음 서명 할 스크립트에 대한 요구 사항 해제 확인란을 선택합니다 . 끝난.
