업그레이드 PowerShell은 "스크립트 실행이이 시스템에서 비활성화되어 있습니다."라고 말합니다.




windows 7 powershell 5.0 download (18)

명령 프롬프트에서 PowerShell 스크립트를 호출하는 .cmd 파일을 실행하려고하는데 아래 오류가 나타납니다.

이 시스템에서는 스크립트 실행이 비활성화되어 있으므로 Management_Install.ps1을로드 할 수 없습니다.

나는 set-executionpolicy unrestricted get-executionpolicy 했으며 PowerShell에서 get-executionpolicy 를 실행할 때 다시 unrestricted .

// Powershell에서 출력

PS C : \ Users \ Administrator> get-executionpolicy

제한 없음

// DOS에서 출력

C : \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scr

ipts> powershell. \ Management_Install.ps1 1

경고 : x86 PowerShell 실행 중 ...

이 시스템에서 스크립트 실행이 해제되어 있으므로 C : \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts \ Management_Install.ps1 파일을로드 할 수 없습니다. 자세한 내용은 "get-help about_signing"을 참조하십시오.

줄에 : 1 자 : 25

  • . \ Management_Install.ps1 <<<< 1

    • CategoryInfo : NotSpecified : (:) [], PSSecurityException

    • FullyQualifiedErrorId : RuntimeException

C : \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts> 일시 중지

계속하려면 아무 키나 누르십시오. . .

시스템은 Windows Server 2008 R2입니다.

내가 뭘 잘못하고 있죠?


또한이 명령을 스크립트가 실행되기 전에 실행하면 문제가 해결됩니다.

set-executionpolicy unrestricted

PowerShell ISE 편집기에서 다음 줄을 먼저 실행하면 스크립트가 허용됨을 발견했습니다.

Set-ExecutionPolicy RemoteSigned -Scope Process

RemoteSigned : 직접 만든 모든 스크립트가 실행되고 인터넷에서 다운로드 한 모든 스크립트에 신뢰할 수있는 게시자가 서명해야합니다.

간단히 다음을 입력하여 정책을 변경하십시오.

Set-ExecutionPolicy RemoteSigned

  1. PowerShell을 관리자로 열고 Set-ExecutionPolicy -Scope CurrentUser를 실행합니다.
  2. RemoteSigned를 제공하고 Enter 키를 누릅니다.
  3. Set-ExecutionPolicy -Scope CurrentUser 실행
  4. Unrestricted 를 입력하고 Enter 키를 누릅니다.

비슷한 문제가 있었고 Windows Server 2012 의 기본 cmd 가 x64를 실행하고 있다고 언급했습니다.

Windows 7 , Windows 8 , Windows Server 2008 R2 또는 Windows Server 2012의 경우 Administrator 로 다음 명령을 실행하십시오.

x86 (32 비트)
C:\Windows\SysWOW64\cmd.exe 엽니 다 C:\Windows\SysWOW64\cmd.exe
powershell Set-ExecutionPolicy RemoteSigned 명령을 실행하십시오. powershell Set-ExecutionPolicy RemoteSigned

x64 (64 비트)
C:\Windows\system32\cmd.exe 엽니 다 C:\Windows\system32\cmd.exe
powershell Set-ExecutionPolicy RemoteSigned 명령을 실행하십시오. powershell Set-ExecutionPolicy RemoteSigned

다음을 사용하여 모드를 확인할 수 있습니다.

  • CMD에서 : echo %PROCESSOR_ARCHITECTURE%
  • Powershell : [Environment]::Is64BitProcess

참고 문헌 :
MSDN - Windows PowerShell 실행 정책
Windows - 32 비트 대 64 비트 디렉토리 설명


다음 명령을 사용하여이를 우회 할 수도 있습니다.

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

관리자 권한이없는 경우 PowerShell Set-ExecutionPolicy 를 우회하는 15 가지 방법을 설명하는 Scott Sutherland의이 기사를 읽을 수도 있습니다.

PowerShell 실행 정책을 무시하는 15 가지 방법


오늘도 똑같은 문제가있었습니다. 64 비트 실행 정책은 제한되지 않았고 32 비트는 제한되었습니다.

32 비트 정책을 원격으로 변경하는 방법은 다음과 같습니다.

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

실행 정책을 설정하는 것은 환경에 따라 다릅니다. 실행중인 x86 ISE 에서 스크립트를 실행하려는 경우 x86 PowerShell을 사용하여 실행 정책을 설정해야합니다. 마찬가지로 64 비트 ISE를 실행하는 경우 64 비트 PowerShell을 사용하여 정책을 설정해야합니다.


PowerShell을 실행할 때 -ExecutionPolicy ByPass 를 추가하여이 정책을 무시할 수 있습니다.

powershell -ExecutionPolicy ByPass -File script.ps1

기존 답변의 대부분은 방법을 설명하지만 그 이유를 설명하는 사람은 거의 없습니다. 인터넷에서 낯선 사람들이 코드를 실행하기 전에 특히 보안 조치를 비활성화하는 코드를 사용하기 전에 수행중인 작업을 정확히 이해해야합니다. 여기에이 문제에 대해 좀 더 자세히 설명합니다.

TechNet 실행 정책 정보 페이지 :

Windows PowerShell 실행 정책을 사용하면 Windows PowerShell이 ​​구성 파일을로드하고 스크립트를 실행하는 조건을 결정할 수 있습니다.

PowerShell 기본 - 실행 정책 및 코드 서명 에서 열거 된대로 다음과 같은 이점이 있습니다.

  • 실행 제어 - 스크립트 실행에 대한 신뢰 수준을 제어합니다.
  • Command Highjack - 내 경로에 명령을 주입하지 못하게 합니다.
  • ID - 내가 신뢰하는 개발자가 스크립트를 만들고 서명했는지, 내가 신뢰할 수있는 인증 기관의 인증서로 서명했는지 여부.
  • 무결성 - 멀웨어 또는 악의적 인 사용자가 스크립트를 수정할 수 없습니다.

현재 실행 정책을 확인하려면 Get-ExecutionPolicy 실행할 수 있습니다. 그러나 당신이 그것을 바꾸기를 원하기 때문에 아마도 여기에있을 것입니다.

이렇게하려면 Set-ExecutionPolicy cmdlet을 Set-ExecutionPolicy 합니다.

실행 정책을 업데이트 할 때 두 가지 중요한 결정을해야합니다.

실행 정책 유형 :

  • Restricted - 로컬, 원격 또는 다운로드 된 스크립트를 시스템에서 실행할 수 없습니다.
  • AllSigned - 실행 된 모든 스크립트는 디지털 서명이 필요합니다.
  • RemoteSigned - 모든 원격 스크립트 (UNC) 또는 다운로드가 서명되어야합니다.
  • Unrestricted - 모든 유형의 스크립트에 대한 서명이 필요하지 않습니다.

새로운 변화의 범위

  • LocalMachine - 실행 정책은 컴퓨터의 모든 사용자에게 영향을줍니다.
  • CurrentUser - 실행 정책은 현재 사용자에게만 적용됩니다.
  • Process - 실행 정책은 현재 Windows PowerShell 프로세스에만 영향을줍니다.

† = 기본값

: CurrentUser에 대해서만 RemoteSigned로 정책을 변경하려면 다음 명령을 실행하십시오.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

참고 : 실행 정책을 변경하려면 PowerShell을 관리자 로 실행해야합니다. 일반 모드에서 실행 정책을 변경하려고하면 다음 오류가 발생합니다.

'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell'레지스트리 키에 대한 액세스가 거부되었습니다. 기본 (LocalMachine) 범위의 실행 정책을 변경하려면 "관리자 권한으로 실행"옵션을 사용하여 Windows PowerShell을 시작합니다.

인터넷에서 다운로드하지 않은 (또는 적어도 UNC 메타 데이터가 포함되지 않은) 자체 스크립트의 내부 제한을 강화하려면 정책에서 서명 된 스크립트 만 실행하도록 할 수 있습니다. 자신의 스크립트에 서명하려면 Scott Hanselman의 PowerShell 스크립트 서명 에 대한 지침을 따릅니다.

참고 : 대부분의 사람들은 Powershell을 열 때마다 PS가 실행하려고 시도 할 때마다 환경을 설정하는 사용자 프로필 스크립트를 실행하기 때문에이 오류가 발생할 수 있습니다.

파일은 일반적으로 다음 위치에 있습니다.

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

powershell 변수를 실행하여 정확한 위치를 찾을 수 있습니다.

$profile

프로필에 관심이없고 보안 설정에 신경 쓰지 않고 그냥 삭제하면 PowerShell은 실행할 수없는 것을 찾지 못합니다.


PowerShell 2.0에서 실행 정책은 기본적으로 사용 안 함으로 설정되었습니다.

그때부터 PowerShell 팀은 많은 개선 작업을 수행했으며 사용자가 스크립트를 실행하는 동안 많은 일을 겪지 않을 것이라고 확신합니다. 따라서 PowerShell 4.0 이후부터는 기본적으로 활성화되어 있습니다.

귀하의 경우에는 PowerShell 콘솔에서 Set-ExecutionPolicy RemoteSigned 를 입력하고 예라고 말하십시오.


Windows Server 2008 R2를 사용하는 경우 PowerShell의 x64x86 버전에는 실행 정책을 설정해야합니다. 두 호스트 모두에서 실행 정책을 설정 했습니까?

관리자 는 PowerShell 창에 다음을 입력하여 실행 정책을 설정할 수 있습니다.

Set-ExecutionPolicy RemoteSigned

자세한 내용 은 Set-ExecutionPolicy Cmdlet 사용을 참조하십시오.


관리자가 아닌 환경에 있다면 실행 정책 만 설정할 수 있으며 관리자는 필요하지 않습니다.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

또는

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

도움말 항목에서 모든 내용을 읽을 수 있습니다.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

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

Get-ExecutionPolicy;

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

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

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

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

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

바이 패스 정책에서는 차단되는 것이 없으며 스크립트를 실행하는 동안 경고 또는 프롬프트가 표시되지 않습니다. Bypass ExecutionPolicyUnrestricted 보다 더 Unrestricted .


이 줄은 내 Windows Server 2008 R2 서버 중 하나에서 가장 잘 작동하는 것으로 나타났습니다. PowerShell 스크립트에는이 줄이 없어도 몇 가지 문제가 없었습니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

Windows 10을 사용 중이며 어떤 명령도 실행할 수 없습니다. 나에게 단서를 준 유일한 명령은 이것이었다 :

[x64]

  1. C : \ Windows \ SysWOW64 \ cmd.exe [관리자 권한으로 열기 ]
  2. 명령 실행> powershell Set-ExecutionPolicy 제한되지 않음

그러나 이것은 효과가 없었습니다. 그것은 제한적이었다. Windows10에 대한 새로운 보안 정책. 나는이 오류가 있었다 :

Set-ExecutionPolicy : Windows PowerShell은 실행 정책을 성공적으로 업데이트했지만보다 구체적인 범위에서 정의 된 정책에 의해 설정이 다시 정의됩니다. 재정의로 인해 쉘은 현재 유효한 실행 정책을 유지합니다 ...

그래서 다른 방법 ( 해결책 )을 찾았습니다.

  1. 열기 명령 / 콘솔 ( Win + R )
  2. gpedit.msc ( 그룹 정책 편집기)
  3. 로컬 컴퓨터 정책 -> 컴퓨터 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Windows Powershell을 찾습니다 .
  4. " 스크립트 실행 켜기 "활성화
  5. 필요에 따라 정책을 설정하십시오. 내 스크립트를 " 모든 스크립트 허용 "으로 설정했습니다.

이제 PowerShell을 열고 즐기십시오.)


Win + R 키를 누르고 copy copy 명령을 입력하고 OK누릅니다 .

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

그리고 스크립트를 실행하십시오.

그런 다음 변경 사항을 되돌립니다.

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"

Windows 7 :

시작 메뉴로 이동하여 "Windows PowerShell ISE"를 검색하십시오.

x86 버전을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택하십시오.

상단 부분에 붙여 넣기 Set-ExecutionPolicy RemoteSigned ; 스크립트를 실행하십시오. "예"를 선택하십시오.

Powershell ISE의 ​​64 비트 버전 (x86 버전이 아님)에도이 단계를 반복하십시오.

나는 단지 @Chad Miller가 암시 한 단계를 분명히하고있다. 차드에게 감사드립니다!







windows-server-2008-r2