실행 정책을 성공적으로 변경하고 PowerShell 스크립트를 실행하도록 설정하는 방법
Windows Server 2008+ OS에서 실행 정책을 변경하는 것과 관련하여 문제가 있습니다.리소스 전체 액세스 권한이 필요한 스크립트를 처음 실행하고 Powershell을 상승 모드로 시작한 후 다음을 시도합니다.
Set-ExecutionPolicy Unrestricted
하지만 이해합니다.
Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope. Due to the override, your shell will retain its current
effective execution policy of RemoteSigned. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. For more information please see
"Get-Help Set-ExecutionPolicy".
At line:1 char:1
+ Set-ExecutionPolicy Unrestricted
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
+ FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
관리자이지만 실행 정책을 변경할 수 없습니다.무엇을 해야 하나?
다음을 통해 정의하려는 설정을 나타내는 오류 메시지가 표시됩니다.Set-ExecutionPolicy
다른 범위의 설정에 의해 재정의됩니다. 사용Get-ExecutionPolicy -List
어떤 스코프에 어떤 설정이 있는지 확인합니다.
PS C:\> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
PS C:\> Set-ExecutionPolicy Restricted -Scope Process -Force
PS C:\> Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope. Due to the override, your shell will retain its current
effective execution policy of Restricted. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. ...
PS C:\> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Restricted
CurrentUser Unrestricted
LocalMachine RemoteSigned
PS C:\> .\test.ps1
.\test.ps1 : File C:\test.ps1 cannot be loaded because running scripts is
disabled on this system. ...
PS C:\> Set-ExecutionPolicy Unestricted -Scope Process -Force
PS C:\> Set-ExecutionPolicy Restricted -Scope CurrentUser -Force
Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope. Due to the override, your shell will retain its current
effective execution policy of Restricted. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. ...
PS C:\> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Unrestricted
CurrentUser Restricted
LocalMachine RemoteSigned
PS C:\> .\test.ps1
Hello World!
보다시피 두 설정 모두 오류에도 불구하고 정의되었지만 보다 구체적인 범위의 설정(Process
스크립트 실행을 방지하거나 허용하여 여전히 우선합니다.
는 기 범 는 다 같 니 다 습 과 음 위 본 다 니 ▁since ▁the ▁is 같 습 ▁scope ▁default.LocalMachine
는 오는의설의발수있다니습생할해의 할 수 .CurrentUser
또는Process
범위. 그러나 더 일반적인 이유는 스크립트 실행이 그룹 정책(로컬 또는 도메인)을 통해 구성되었기 때문입니다.
를 통해 수정할 수 있습니다.gpedit.msc
(로컬 그룹 정책 편집기)를 클릭합니다.
설정할 수 가 " " " " " " " "/" " " " " " " " " 를 통해 .gpmc.msc
도메인 컨트롤러의 (그룹 정책 관리).
로컬 및 도메인 정책 모두에서 이 설정을 컴퓨터 설정으로 정의할 수 있습니다.
Computer Configuration
`-Administrative Templates
`-Windows Components
`-Windows PowerShell -> Turn on Script Execution
또는 사용자 설정으로서:
User Configuration
`-Administrative Templates
`-Windows Components
`-Windows PowerShell -> Turn on Script Execution
전자는 컴퓨터 개체에 적용되는 반면 후자는 사용자 개체에 적용됩니다.로컬 정책의 경우 사용자 정책이 컴퓨터의 모든 사용자에게 자동으로 적용되기 때문에 사용자 정책과 컴퓨터 정책 사이에 큰 차이가 없습니다.
정책은 다음 세 가지 상태 중 하나를 가질 수 있습니다(또는 사용 상태에 대해 사용 가능한 세 가지 설정을 별도로 계산하는 경우 다섯 가지 상태).
- 구성되지 않음: 정책이 PowerShell 스크립트 실행을 제어하지 않습니다.
- 사용: PowerShell 스크립트 실행을 허용합니다.
- 서명된 스크립트만 허용: 서명된 스크립트만 실행 허용(와 동일)
Set-ExecutionPolicy AllSigned
). - 로컬 스크립트 및 원격 서명 스크립트 허용: 원격 위치에서 모든 로컬 스크립트(서명 여부와 상관없이) 및 서명된 스크립트 실행 허용
Set-ExecutionPolicy RemoteSigned
). - 모든 스크립트 허용: 서명 여부에 관계없이 로컬 및 원격 스크립트 실행 허용(와 동일)
Set-ExecutionPolicy Unrestricted
).
- 서명된 스크립트만 허용: 서명된 스크립트만 실행 허용(와 동일)
- 사용 안 함: PowerShell 스크립트 실행 허용 안 함(와 동일)
Set-ExecutionPolicy Restricted
).
경내변을 된 내용:Set-ExecutionPolicy
로컬 및 도메인 정책이 구성되지 않음으로 설정된 경우에만 적용됩니다(실행 정책).Undefined
MachinePolicy
그리고.UserPolicy
).
에서 모든 (으)로 하는 것을 입니다.Unrestricted
드모. 사실 사용자(관리자라도)에 대한 실행 정책과 상관없이Local Group Policy
우선권을 가질 것입니다.
기본적으로 로컬 그룹 스크립트 실행 정책은 스크립트 실행이 허용되지 않는 정책입니다.바꿔야 해요!
로컬 그룹 실행 정책 변경
이 작업은 다음을 통해 수행됩니다.Local Group Policy Editor
Windows 검색 줄에서 "그룹 정책"을 검색하여 액세스할 수 있습니다.또는 다음 작업을 수행합니다.
- 를 을 엽니다.
Win + r
mmc
. - 에 가다
File -> Add Remove Snap In...
. - 에서 왼쪽창찾기를 찾습니다.
Group Policy Object Editor
그리고 추가합니다. - 양식을 닫습니다.
그런 다음 왼쪽 창에서 그룹 편집기를 확장할 수 있습니다.해서 확하고다이니다합동로음으장으로 합니다.Computer Configuration -> Administrative Templates -> Windows Components
.
그럼 다음으로Windows PowerShell
.
그래서 선택합니다.Turn on Script Execution
을 " " " 로 변경합니다.Enabled
및지를 합니다.Allow all scripts
안에Execution Policy
.
▁hitting니▁by를 눌러 합니다.Ok
관리 콘솔을 닫습니다.
이제 핫픽스를 설치할 수 있습니다.
VS 2013용 2.8.7: https://github.com/NuGet/Home/releases/download/2.8.7/NuGet.Tools.vsix
VS 2015용 3.1.1: https://github.com/NuGet/Home/releases/download/3.1.1/NuGet.Tools.vsix
https://github.com/NuGet/Home/issues/974
@Ansgar Wiechers's Answer's Ansgar Wiechers's Answer's Answer.그러면 시스템 정책 범위에 문제가 있을 수 있습니다.따라서 이 문제에 대한 한 가지 해결책이 있을 수 있습니다.실행 정책 키의 레지스트리 값 편집 위치
HKEY_LOCAL_MACHINE -> 소프트웨어 -> 정책 -> Microsoft -> Windows -> Powershell
많은 솔루션을 시도한 후 PS 스크립트를 실행하는 것이 효과가 있었습니다.
최근 Visual Studio 2015에서 이 문제를 겪고 있다면 도구 > 확장 및 업데이트 >에서 nuget 패키지 관리자에 대한 업데이트가 있는지 확인하십시오.
PowerShell 실행 정책이 그룹 정책을 통해 도메인 컨트롤러에 의해 설정되는 경우 부팅할 때마다 레지스트리에서 실행 정책을 "바이패스"로 재설정해야 합니다.프로세스를 자동화하기 위해 한 쌍의 시작 스크립트를 만들었습니다.아래에 저의 프로세스를 설명합니다.
%USERPROFILE%\라는 폴더 생성스크립트를 문서화\StartupScripts한 다음 다음 코드를 사용하여 실행 정책.ps1이라는 PowerShell 스크립트를 배치합니다.
Push-Location
Set-Location HKLM:\Software\Policies\Microsoft\Windows\PowerShell
Set-ItemProperty . ExecutionPolicy "Bypass"
Pop-Location
그런 다음 %USERPROFILE%\AppData\Roaming\Microsoft\라는 파일을 만듭니다.Windows\시작 메뉴\프로그램\Startup\Startup.cmd를 입력하고 다음 코드를 입력합니다.
PowerShell -Version 3.0 -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
PowerShell -Version 3.0 "%USERPROFILE%\Documents\StartupScripts\ExecutionPolicy.ps1" >> "%TEMP%\StartupLog.txt" 2>&1
이 스크립트는 모든 로그인 시작 시 실행됩니다.
합니다.psa.cmd
PATH가 :PATH를 입력합니다.
POWERSHELL -Command "$enccmd=[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((Get-Content '%1' | Out-String)));POWERSHELL -EncodedCommand $enccmd"
이제 다음과 같이 모든 powershell 스크립트를 실행할 수 있습니다.
psa script.ps1
방금 했어요.
Set-ExecutionPolicy Unrestricted -Scope Process -Force
Set-ExecutionPolicy Unrestricted
그리고 그것은 성공하였다.
지난번에 이 문제에 뛰어들었을 때 다음 코드가 수정되었습니다.스크립트를 실행하기 전에 관리자 권한으로 터미널을 실행하고 다시 실행하는 것을 잊지 마십시오.
Set-ItemProperty -path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell" EnableScripts 1
내 것을 고친 방법은 다음과 같습니다.먼저 범위와 현재 상태를 나열하는 Get-ExecutionPolicy-List를 실행합니다.
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
보시다시피 모든 범위가 정의되지 않았기 때문에 PowerShell에서 스크립트를 실행할 수 없었던 것 같습니다.이제 CurrentUser 범위를 제한하지 않고 Set-ExecutionPolicy Unlimited-ScopeCurrentUser-Force를 실행하기만 하면 됩니다.
그러나 문제가 발생할 경우 현재 사용자 범위를 제한됨으로 설정한 다음 제한되지 않음으로 다시 설정하십시오.
ExecutionPolicy Restricted -Scope CurrentUser -Force
ExecutionPolicy Unrestricted -Scope CurrentUser -Force
제한을 변경했지만 문제가 계속 발생하는 경우 이 작업을 수행하십시오.:Windows 로고를 마우스 오른쪽 버튼으로 클릭하여 Powershell(admin)을 선택하면 명령을 실행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/27753917/how-do-you-successfully-change-execution-policy-and-enable-execution-of-powershe
'source' 카테고리의 다른 글
데이터베이스 링크를 통해 설명하시겠습니까? (0) | 2023.08.10 |
---|---|
Android의 URL 인코딩 (0) | 2023.08.05 |
Android에 사용되는 SQLite 버전은 무엇입니까? (0) | 2023.08.05 |
M1 도커 미리 보기 및 키클로크 'image' 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼(linux/arm64/v8)과 일치하지 않음' 문제 (0) | 2023.08.05 |
안드로이드 구글 지도 java.lang.NoClassDefFoundError: 확인 실패: Log/apache/http/ProtocolVersion (0) | 2023.08.05 |