PowerShell 스크립트를 실행하는 방법은 무엇입니까? 발생합니다. 이 시스템에서 스크립트 실행이 비활성화되어

PowerShell 스크립트를 실행하려고하면이 오류가 발생합니다.

이 시스템에서 스크립트 실행이 비활성화되어 있으므로 파일 C : \ Common \ Scripts \ hello.ps1을로드 할 수 없습니다. 자세한 내용은 “get-help about_signing”을 참조하십시오.
1 행 : char : 13
+. \ hello.ps1 <<<<
+ CategoryInfo : NotSpecified : (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException



답변

  1. “관리자 권한으로 실행”옵션을 사용하여 Windows PowerShell을 시작하십시오. 컴퓨터의 Administrators 그룹 구성원 만 실행 정책을 변경할 수 있습니다.

  2. 다음을 입력하여 서명되지 않은 스크립트 실행을 활성화하십시오.

    set-executionpolicy remotesigned
    

이를 통해 로컬 컴퓨터에서 작성하는 서명되지 않은 스크립트와 인터넷에서 서명 된 스크립트를 실행할 수 있습니다.

Microsoft TechNet 라이브러리에서 스크립트 실행을 참조하십시오 .


답변

기본 실행 정책이 제한으로 설정되어 있습니다. 다음을 입력하여 볼 수 있습니다.

Get-ExecutionPolicy

무제한 모드로 전환하려면 다음을 입력해야합니다.

Set-ExecutionPolicy unrestricted

도움이 되었기를 바랍니다


답변

스크립트를 개발하는 데 사용하는 컴퓨터에서는 위와 같이 -unrestricted를 사용합니다. 그러나 최종 사용자 컴퓨터에 스크립트를 배포 할 때는 -executionpolicy 스위치를 사용하여 powershell을 호출하면됩니다.

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1


답변

아래 명령으로 현재 ExecutionPolicy의 상태를 확인할 수 있습니다.

Get-ExecutionPolicy;

기본적으로 Restricted 입니다. PowerShell 스크립트를 실행하려면이 ExecutionPolicy를 Bypass 또는 Unrestricted 로 설정해야합니다 .

아래 PowerShell 명령 중 하나를 사용 Bypass하거나 Unrestricted사용하여 현재 사용자에 대한 정책을 설정할 수 있습니다 .

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

무제한 정책은 모든 구성 파일을로드하고 모든 스크립트를 실행합니다. 인터넷에서 다운로드 한 서명되지 않은 스크립트를 실행하면 실행하기 전에 권한을 묻는 메시지가 표시됩니다.

있는 반면 바이 패스 정책, 아무것도 차단되지 및 스크립트 실행시에는 경고 또는 프롬프트가 없습니다. 바이 패스 실행 정책이 무제한보다 완화되었습니다.


답변

Windows 버전 및 구성에 따라 Unrestricted모드 에서도 다음과 같은 경고가 표시 될 수 있습니다 .

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the
Unblock-File cmdlet to allow the script to run without this warning message.
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

해결책은 다음 명령으로 활성화 된 “바이 패스”정책을 사용하는 것입니다.

Set-ExecutionPolicy Bypass

로부터 문서 :

우회 : 아무것도 차단되지 않으며 경고 나 프롬프트가 없습니다.

이것은 분명히 안전하지 않으므로 관련된 위험을 이해하십시오.


답변

다음과 같은 등록 키 :
Windows 레지스트리 편집기 버전 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell] “EnableScripts”= dword : 00000001 “ExecutionPolicy”= “바이 패스”

과:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

실제로 작동합니다.


답변

어떤 이유로 PowerShell cmdlet은 로컬 사용자 컨텍스트에 대해서만 로컬로 로컬 실행을 활성화하지 않았습니다. 예를 들어 자체 사용자 컨텍스트에서 실행되는 CygWin의 bash 프롬프트에서 Powershell 스크립트를 시작하려고하면 실행되지 않아 “디지털 서명되지 않았습니다”라는 오류가 발생합니다. 대답은 로컬 그룹 정책 편집기-> 로컬 컴퓨터 정책-> 관리 템플릿-> Windows 구성 요소-> Windows PowerShell로 이동하여 ‘스크립트 실행 켜기’를 두 번 클릭하는 것이 었습니다. 그런 다음 ‘사용 가능’으로 변경 한 다음 “로컬 스크립트 및 원격 서명 된 스크립트 허용”의 실행 정책을 작성하고 사용자 컨텍스트에 관계없이 전체적으로 작동하게합니다.