반응형

PowerShell은 "이 시스템에서 스크립트의 실행이 비활성화 된 스크립트"라고 말합니다.


질문

 

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

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

이 명령을 실행했습니다.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

PowerShell에서 Get-ExecutionPolicy를 실행하면 무제한을 반환합니다.

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

C : \ Projects \ Microsoft.Practices.esb \ Source \ Samples \ 관리 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 char : 25. . \ management_install.ps1 <<<< 1. CategoryInfo : notspecified : (:) [], pssecurityException FlyQualifiedErrorID : RuntimeException. C : \ Projects \ Microsoft.Practices.esb \ Source \ Samples \ 관리 Portal \ install \ scripts> 일시 중지 계속하려면 아무 키나 누르십시오....에...에


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

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


답변

 

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

관리자는 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


답변

PowerShell을 실행할 때 -executionPolicy 바이 패스를 추가 하여이 정책을 단일 파일에 무시할 수 있습니다.

powershell -ExecutionPolicy Bypass -File script.ps1


답변

나는 비슷한 문제가 있고 Windows Server 2012의 기본 CMD가 x64를 실행 중임을 지적했다.

Windows 11, Windows 10, Windows 7, Windows 8, Windows Server 2008 R2 또는 Windows Server 2012의 경우 다음 명령을 관리자 권한으로 실행합니다.

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

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

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

CMD : 에코 % Processor_Architecture % PowerShell : [환경] :: is64bitpress.

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



답변

기존의 대답의 대부분은 어떻게 설명하지만 그 이유를 설명하지는 않습니다.그리고 인터넷의 낯선 사람들로부터 코드를 실행하기 전에, 특히 보안 조치를 비활성화하는 코드를 사용하면, 당신이하는 일을 정확히 이해해야합니다.그래서이 문제에 대해 조금 더 자세히 설명합니다.

실행 정책에 대한 TechNet에서 :

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

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

실행 제어 - 스크립트 실행을위한 신뢰 수준을 제어합니다. 명령 HighJack - 내 경로에서 명령을 주입하지 못하게합니다. ID - 개발자 I 신뢰 및 / 또는 신뢰하는 인증 기관의 인증서와 서명 한 개발자가 작성하고 서명 한 스크립트입니다. 무결성 - 맬웨어 또는 악의적 인 사용자가 스크립트를 수정할 수 없습니다.

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

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

실행 정책을 업데이트 할 때 두 가지 중요한 결정을 내릴 수 있습니다.

실행 정책 유형 :

제한된 ¶ - 로컬, 원격 또는 다운로드 된 스크립트가 시스템에서 실행될 수 있습니다. ALLSIGNED - RAN 인 모든 스크립트는 디지털 서명해야합니다. RemoteSigned - 모든 원격 스크립트 (UNC) 또는 다운로드가 필요합니다. 무제한 - 모든 유형의 스크립트에 대한 서명이 필요하지 않습니다.

새로운 변화의 범위

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

† = 기본값

예를 들면 다음과 같습니다. CurrentUser에 대한 정책을 변경하려는 경우 다음 명령을 실행할 것입니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

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

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

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

참고 : PowerShell이 시작될 때마다 PowerShell을 열 때 마다이 오류가 발생할 때 마다이 오류가 발생할 수 있습니다.

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

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

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

$profile

프로필에서주의를 기울이고 보안 설정을 사용하지 않으려는 것이 아무것도 없으면 그것을 삭제하고 삭제할 수 있으며 PowerShell은 실행할 수없는 것을 찾을 수 없습니다.



답변

아래 명령을 사용하여 현재 ExecutionPolicy의 상태를 얻을 수 있습니다.

Get-ExecutionPolicy

기본적으로 그것은 제한됩니다.PowerShell 스크립트의 실행을 허용하려면이 ExecutionPolicy를 무제한 또는 우회로 설정해야합니다.

우리는 아래의 powershell 명령을 사용하여 현재 사용자의 정책을 바이 패스로 설정할 수 있습니다.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force

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

우회 정책에서는 차단되지 않으며 스크립트 실행 중에 경고가 없거나 프롬프트가 없습니다.Bypass ExecutionPolicy는 제한없는 것보다 더 완화됩니다.



답변

sou이 명령을 실행해야합니다

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
출처:https://stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system
반응형