etc./StackOverFlow

PowerShell에 "이 시스템에서는 스크립트 실행이 비활성화되어 있습니다."라고 표시됩니다.

청렴결백한 만능 재주꾼 2021. 11. 26. 06:55
반응형

질문자 :Conor


cmd.exe 에서 PowerShell 스크립트를 호출 cmd 파일을 실행하려고 하는데 다음 오류가 발생합니다.

이 시스템에서 스크립트 실행이 비활성화되어 있으므로 Management_Install.ps1

이 명령을 실행했습니다.

 Set-ExecutionPolicy -ExecutionPolicy Unrestricted

PowerShell에서 Get-ExecutionPolicy 를 실행하면 Unrestricted 반환됩니다.

 PS C:\Users\Administrator\> Get-ExecutionPolicy Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> 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 .ps1 <<<< 1

    • CategoryInfo : 지정되지 않음: (:) [], PSSecurityException

    • FullQualifiedErrorId : 런타임 예외

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

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


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

내가 무엇을 잘못하고 있지?



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

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

 Set-ExecutionPolicy RemoteSigned

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

완료되면 다음을 사용하여 정책을 기본값으로 다시 설정할 수 있습니다.

 Set-ExecutionPolicy Restricted

다음과 같은 오류가 표시될 수 있습니다.

 Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. To change the execution policy for the default (LocalMachine) scope, start Windows PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".

따라서 다음과 같이 명령을 실행해야 할 수도 있습니다(주석에서 볼 수 있음).

 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Chad Miller

PowerShell을 실행할 때 -ExecutionPolicy Bypass 를 추가하여 단일 파일에 대해 이 정책을 우회할 수 있습니다.

 powershell -ExecutionPolicy Bypass -File script.ps1

Jack Edmonds

비슷한 문제가 있었고 Windows Server 2012 cmd 가 x64를 실행하고 있음을 확인했습니다.

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

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

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

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

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

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


Ralph Willgoss

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

TechNet 정보 실행 정책 페이지에서 :

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

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

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

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

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

실행 정책을 업데이트할 때 두 가지 주요 결정을 내려야 합니다.

실행 정책 유형:

  • 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 메타데이터를 포함하지 않는) 자체 스크립트에 대한 내부 제한을 강화하려는 경우 정책이 서명된 스크립트만 실행하도록 강제할 수 있습니다. 자신의 스크립트에 서명하려면 PowerShell 스크립트 서명 에 대한 Scott Hanselman의 기사 지침을 따르십시오.

참고 : 대부분의 사람들은 Powershell을 열 때마다 이 오류가 발생할 가능성이 높습니다. PS가 시작될 때 가장 먼저 하려고 하는 것은 환경을 원하는 대로 설정하는 사용자 프로필 스크립트를 실행하는 것이기 때문입니다.

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

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

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

 $profile

프로필에서 신경쓰는 것이 없고 보안 설정에 신경쓰고 싶지 않다면 그냥 삭제하면 됩니다. 그러면 powershell은 실행할 수 없는 것을 찾지 못할 것입니다.


KyleMit

Windows 7:

시작 메뉴로 이동하여 "Windows PowerShell ISE"를 검색합니다.

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

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

Powershell ISE의 64비트 버전(x86이 아닌 버전)에 대해서도 이 단계를 반복합니다.

@Chad Miller가 암시한 단계를 명확히 하고 있습니다. 고마워 채드!


Ryan

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

 set-executionpolicy unrestricted

manik sikka

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

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

또는

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

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

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

Micah 'Powershell Ninja'

아래 명령 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;

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

반면 바이패스 정책에서는 스크립트 실행 중에 차단되지 않으며 경고나 프롬프트가 표시되지 않습니다. Bypass ExecutionPolicy Unrestricted 보다 더 느슨합니다.


Pratik Patil

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

좋습니다. 간단히 다음을 입력하여 정책을 변경합니다.

 Set-ExecutionPolicy RemoteSigned

Jaime

Windows 10을 사용 중이고 어떤 명령도 실행할 수 없습니다. 나에게 몇 가지 단서를 준 유일한 명령은 다음과 같습니다.

[x64]

  1. C:\Windows\SysWOW64\cmd.exe [관리자 권한]을 엽니다.
  2. 명령 실행> powershell Set-ExecutionPolicy Unrestricted

그러나 이것은 작동하지 않았습니다. 제한적이었습니다. 아마도 Windows10에 대한 새로운 보안 정책일 것입니다. 이 오류가 발생했습니다.

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

그래서 다른 방법을 찾았습니다 ( 솔루션 ).

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

이제 PowerShell을 열고 즐기세요 ;)


hugocabral

  1. 관리 권한으로 powershell 열기
 Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

이 명령을 사용


MD SHAYON

Win + R을 누르고 복사 붙여넣기 명령을 입력하고 확인을 누릅니다 .

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

그리고 스크립트를 실행합니다.

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

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

Qamar

이것을 시도하고 "모두"옵션을 선택할 수 있습니다

 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

Taqi Raza Khan

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


ScriptAholic

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

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

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

PowerShell 실행 정책을 우회하는 15가지 방법


Alexander Sinno

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

이제 사용 중인 명령을 실행하십시오. 이 앱이 실행될 것임을 믿으십시오. 즐기십시오. :)


T Manojith

나는 또한 비슷한 문제에 직면 해 누군가에게 도움이되기를 바랍니다. Windows를 사용하고 있으므로 아래에 제공된 단계를 따랐습니다. 관리자로 명령 프롬프트를 열고이 경로로 이동하십시오.

 C:\Users\%username%\AppData\Roaming\npm\

이 폴더(dir)에서 ng.ps1 파일을 찾은 다음 삭제(del ng.ps1)

이 단계 없이도 작동해야 하지만 이 후에 npm 캐시를 지울 수도 있습니다. 그것이 나를 위해 일한 것처럼 도움이되기를 바랍니다.

도움이 되기를 바랍니다.


Rashi Goyal

PowerShell ISE 편집기에서 다음 줄을 실행하면 먼저 허용된 스크립트를 찾았습니다.

 Set-ExecutionPolicy RemoteSigned -Scope Process

David Douglas

Set-ExecutionPolicy RemoteSigned

powershell의 관리자 모드에서 이 명령을 실행하면 문제가 해결됩니다.


User

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

Ramanujam Allam

이것은 내 문제를 해결했습니다.

Windows PowerShell ExecutionPolicy 하여 ExecutionPolicy를 변경합니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

변경 확인을 요청하는 경우 'Y'를 누르고 Enter 키를 누릅니다.


R15

창 10:

관리자가 아닌 경우 이것을 사용할 수 있습니다.

 powershell Set-ExecutionPolicy -Scope CurrentUser

cmdlet Set-ExecutionPolicy at 명령 파이프라인 위치 1 다음 매개 변수에 대한 값을 제공합니다. ExecutionPolicy: RemoteSigned

그것은 매력처럼 내 문제를 해결했습니다!


Jeffrey Cheong

Set-ExecutionPolicy RemoteSigned 를 실행하려고 하면 또 다른 경고가 표시됩니다.

이 명령으로 해결했습니다.

 Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

George C.

Powershell 콘솔을 관리자로 열고 실행 정책을 설정하십시오.

 Set-ExecutionPolicy -ExecutionPolicy Remotesigned

lokeshbandharapu

PowerShell 2.0에서 실행 정책은 기본적으로 비활성화로 설정되었습니다.

그 이후로 PowerShell 팀은 많은 개선을 이루었고 사용자가 스크립트를 실행하는 동안 많은 문제가 발생하지 않을 것이라고 확신합니다. 따라서 PowerShell 4.0부터는 기본적으로 활성화됩니다.

귀하의 경우 Set-ExecutionPolicy RemoteSigned 를 입력하고 예라고 말합니다.


Adil Arif

나는 오늘 같은 문제가 있었다. 64비트 실행 정책은 제한이 없는 반면 32비트는 제한되었습니다.

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

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

rko281

레지스트리 경로 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell 하고 ExecutionPolicyRemoteSigned 설정합니다.


sunish surendran.k

Windows에서 명령 프롬프트를 열고 문제가 powershell에만 있는 경우 다음 명령을 사용합니다.

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

phpnerd

Ruby 또는 Chef 로 실행하고 `` 시스템 실행을 사용하기 때문에 여기에 있는 경우 다음과 같이 실행하십시오.

 `powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

해당 명령은 "MyDocuments" 폴더를 가져오기 위한 것입니다.

-ExecutionPolicy Unrestricted 가 트릭을 수행합니다.

다른 사람에게 도움이 되기를 바랍니다.


JGutierrezC

여러 답변이 실행 정책을 가리킵니다. 그러나 일부 항목에는 "runas 관리자"도 필요합니다. 실행 정책에 영구적인 변경이 없고 관리자 제한을 벗어날 수 있다는 점에서 가장 안전합니다. 다음을 사용하여 배치를 시작하려면 schedtask와 함께 사용하십시오.

 runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

위의 Jack Edmonds와 Post의 Peter Mortensen / Dhana 로부터 명령 프롬프트에서 "관리자 권한으로 실행"으로 응용 프로그램을 실행하는 방법은 무엇입니까?


Kirt Carson

출처 : http:www.stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system

반응형