다음을 통해 공유


Set-ExecutionPolicy

Windows 컴퓨터에 대한 PowerShell 실행 정책을 설정합니다.

구문

All

Set-ExecutionPolicy
    [-ExecutionPolicy] <ExecutionPolicy>
    [[-Scope] <ExecutionPolicyScope>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

Set-ExecutionPolicy cmdlet은 Windows 컴퓨터에 대한 PowerShell 실행 정책을 변경합니다. 자세한 내용은 about_Execution_Policies를 참고하십시오.

실행 정책은 PowerShell 보안 전략의 일부입니다. 실행 정책은 PowerShell 프로필과 같은 구성 파일을 로드하거나 스크립트를 실행할 수 있는지 여부를 결정합니다. 또한 스크립트를 실행하기 전에 디지털 서명해야 하는지 여부도 결정됩니다.

cmdlet의 Set-ExecutionPolicy 기본 범위는 컴퓨터를 사용하는 모든 사용자에게 영향을 주는 LocalMachine입니다. LocalMachine에 대한 실행 정책을 변경하려면 관리자 권한으로 실행을 사용하여 PowerShell을 시작합니다.

각 범위에 대한 실행 정책을 우선 순위 순서대로 표시하려면 Get-ExecutionPolicy -List사용합니다. PowerShell 세션에 대한 유효 실행 정책을 보려면 매개 변수 없이 Get-ExecutionPolicy 사용합니다.

예제

예제 1: 실행 정책 설정

이 예제에서는 로컬 컴퓨터에 대 한 실행 정책을 설정 하는 방법을 보여 줍니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy cmdlet은 ExecutionPolicy 매개 변수를 사용하여 RemoteSigned 정책을 지정합니다. Scope 매개 변수는 LocalMachine기본 범위 값을 지정합니다. 실행 정책 설정을 보려면 Get-ExecutionPolicy 매개 변수와 함께 cmdlet을 사용합니다.

예제 2: 그룹 정책과 충돌하는 실행 정책 설정

이 명령은 LocalMachine 범위의 실행 정책을 Restricted로 설정하려고 시도합니다. LocalMachine 은 더 제한적이지만 그룹 정책 충돌하기 때문에 효과적인 정책이 아닙니다. 제한 정책은 레지스트리 하이브 HKEY_LOCAL_MACHINE에 기록됩니다.

PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine

Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted

PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds

Name                    Property
----                    --------
Microsoft.PowerShell    Path            : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
                        ExecutionPolicy : Restricted
ScriptedDiagnostics     ExecutionPolicy : Unrestricted

cmdlet은 Set-ExecutionPolicyExecutionPolicy 매개 변수를 사용하여 제한 정책을 지정합니다. Scope 매개 변수는 LocalMachine기본 범위 값을 지정합니다. cmdlet은 Get-ChildItemHKLM 공급자와 함께 Path 매개 변수를 사용하여 레지스트리 위치를 지정합니다.

예제 3: 원격 컴퓨터에서 로컬 컴퓨터에 실행 정책 적용

이 명령은 원격 컴퓨터에서 실행 정책 개체를 가져오고 로컬 컴퓨터에서 정책을 설정합니다. Get-ExecutionPolicy Microsoft.PowerShell.ExecutionPolicy 개체를 파이프라인 아래로 보냅니다. Set-ExecutionPolicy 파이프라인 입력을 허용하며 ExecutionPolicy 매개 변수가 필요하지 않습니다.

PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy

Invoke-Command cmdlet은 로컬 컴퓨터에서 실행되고 ScriptBlock 원격 컴퓨터로 보냅니다. ComputerName 매개 변수는 원격 컴퓨터 Server01지정합니다. ScriptBlock 매개 변수는 원격 컴퓨터에서 Get-ExecutionPolicy 실행됩니다. Get-ExecutionPolicy 개체는 파이프라인을 Set-ExecutionPolicy보냅니다. Set-ExecutionPolicy 실행 정책을 로컬 컴퓨터의 기본 범위인 LocalMachine에 적용합니다.

예제 4: 실행 정책의 범위 설정

이 예제에서는 지정된 범위 CurrentUser에 대한 실행 정책을 설정하는 방법을 보여 줍니다. CurrentUser 범위는 이 범위를 설정하는 사용자에게만 영향을 줍니다.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       AllSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy ExecutionPolicy 매개 변수를 사용하여 AllSigned 정책을 지정합니다. Scope 매개 변수는 CurrentUser를 지정합니다. 실행 정책 설정을 보려면 Get-ExecutionPolicy 매개 변수와 함께 cmdlet을 사용합니다.

사용자에 대한 유효 실행 정책은 AllSigned가 됩니다.

예제 5: 현재 사용자에 대한 실행 정책 제거

이 예제에서는 정의되지 않은 실행 정책을 사용하여 지정된 범위에 대한 실행 정책을 제거하는 방법을 보여 줍니다.

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Set-ExecutionPolicy ExecutionPolicy 매개 변수를 사용하여 정의되지 않은 정책을 지정합니다. Scope 매개 변수는 CurrentUser를 지정합니다. 실행 정책 설정을 보려면 Get-ExecutionPolicy 매개 변수와 함께 cmdlet을 사용합니다.

예제 6: 현재 PowerShell 세션에 대한 실행 정책 설정

프로세스 범위는 현재 PowerShell 세션에만 영향을 줍니다. 실행 정책은 $env:PSExecutionPolicyPreference 환경 변수에 저장되고 세션이 닫히고 삭제됩니다.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       AllSigned
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy 매개 변수를 사용하여 AllSigned 정책을 지정합니다. Scope 매개 변수는 Process 값을 지정합니다. 실행 정책 설정을 보려면 Get-ExecutionPolicy 매개 변수와 함께 cmdlet을 사용합니다.

예제 7: 실행 정책을 변경하지 않고 스크립트를 실행하도록 차단 해제

이 예제에서는 RemoteSigned 실행 정책으로 인해 서명되지 않은 스크립트를 실행하지 못하게 하는 방법을 보여 줍니다.

cmdlet을 사용하여 Unblock-File 안전한지 확인하는 것이 가장 좋습니다. Unblock-File cmdlet은 스크립트를 실행할 수 있도록 차단을 해제하지만 실행 정책은 변경하지 않습니다.

PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

PS> Unblock-File -Path .\Start-ActivityTracker.ps1

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

Task 1:

Set-ExecutionPolicy ExecutionPolicy 매개 변수를 사용하여 RemoteSigned 정책을 지정합니다. 정책은 LocalMachine기본 범위에 대해 설정됩니다.

Get-ExecutionPolicy cmdlet은 RemoteSigned 현재 PowerShell 세션에 대한 유효한 실행 정책임을 보여 줍니다.

Start-ActivityTracker.ps1 스크립트는 현재 디렉터리에서 실행됩니다. 스크립트는 디지털 서명되지 않았기 때문에 RemoteSigned 의해 차단됩니다.

이 예제에서는 스크립트의 코드를 검토하고 실행하기에 안전한 것으로 확인되었습니다. Unblock-File cmdlet은 Path 매개 변수를 사용하여 스크립트 차단을 해제합니다.

실행 정책을 변경하지 않았는지 확인하려면 RemoteSigned유효한 실행 정책을 표시합니다.

스크립트 Start-ActivityTracker.ps1 현재 디렉터리에서 실행됩니다. 스크립트가 Unblock-File cmdlet에 의해 차단 해제되었기 때문에 실행되기 시작합니다.

매개 변수

-Confirm

cmdlet을 실행하기 전에 확인 메시지를 표시합니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False
별칭:cf(cf)

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-ExecutionPolicy

실행 정책을 지정합니다. 그룹 정책이 없고 각 범위의 실행 정책이 정의되지 않음으로 설정된 경우 제한 됨이 모든 사용자에게 유효한 정책이 됩니다.

허용되는 실행 정책 값은 다음과 같습니다.

  • AllSigned. 로컬 컴퓨터에 작성된 스크립트를 포함하여 신뢰할 수 있는 게시자가 모든 스크립트 및 구성 파일에 서명해야 합니다.
  • 우회. 아무것도 차단되지 않으며 경고 또는 프롬프트가 없습니다.
  • 기본값입니다. 기본 실행 정책을 설정합니다. Windows 클라이언트에 대해 제한되거나 Windows 서버에 대해 RemoteSigned가 제한됩니다.
  • RemoteSigned. 인터넷에서 다운로드한 모든 스크립트 및 구성 파일이 신뢰할 수 있는 게시자에 의해 서명되어야 합니다. Windows 서버 컴퓨터에 대한 기본 실행 정책입니다.
  • 제한됨. 구성 파일을 로드하거나 스크립트를 실행하지 않습니다. 기본 실행 정책 Windows 클라이언트 컴퓨터입니다.
  • 정의되지 않았습니다. 범위에 대해 실행 정책이 설정되지 않았습니다. 그룹 정책에 의해 설정되지 않은 범위에서 할당된 실행 정책을 제거합니다. 모든 범위의 실행 정책이 정의되지 않은 경우 유효 실행 정책은 Restricted입니다.
  • 제한되지 않습니다. 모든 구성 파일을 로드하고 모든 스크립트를 실행합니다. 인터넷에서 다운로드한 서명되지 않은 스크립트를 실행하면 실행되기 전에 사용 권한을 묻는 메시지가 표시됩니다.

매개 변수 속성

형식:ExecutionPolicy
Default value:None
허용되는 값:AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Force

모든 확인 프롬프트를 표시하지 않습니다. 예기치 않은 결과를 방지하려면 이 매개 변수에 주의하세요.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Scope

실행 정책의 영향을 받는 범위를 지정합니다. 기본 범위는 LocalMachine입니다.

유효 실행 정책은 다음과 같이 우선 순위에 따라 결정됩니다.

  • MachinePolicy. 컴퓨터의 모든 사용자에 대해 그룹 정책에 의해 설정됩니다.
  • UserPolicy. 컴퓨터의 현재 사용자에 대한 그룹 정책에 의해 설정됩니다.
  • 프로세스. 현재 PowerShell 세션에만 영향을 줍니다.
  • CurrentUser입니다. 현재 사용자에만 영향을 줍니다.
  • localMachine. 컴퓨터의 모든 사용자에게 영향을 주는 기본 범위입니다.

프로세스 범위는 현재 PowerShell 세션에만 영향을 줍니다. 실행 정책은 레지스트리가 아닌 환경 변수에 $env:PSExecutionPolicyPreference저장됩니다. PowerShell 세션을 닫으면 변수와 값이 삭제됩니다.

CurrentUser 범위에 대한 실행 정책은 레지스트리 하이브 HKEY_LOCAL_USER에 기록됩니다.

LocalMachine 범위에 대한 실행 정책은 레지스트리 하이브 HKEY_LOCAL_MACHINE에 기록됩니다.

매개 변수 속성

형식:ExecutionPolicyScope
Default value:LocalMachine
허용되는 값:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-WhatIf

cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.

매개 변수 속성

형식:SwitchParameter
Default value:False
와일드카드 지원:False
DontShow:False
별칭:위스콘신

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

Microsoft.PowerShell.ExecutionPolicy, System.String

실행 정책 개체 또는 실행 정책의 이름을 포함하는 문자열을 로 파이프할 Set-ExecutionPolicy수 있습니다.

출력

None

Set-ExecutionPolicy 출력을 반환하지 않습니다.

참고

Set-ExecutionPolicy MachinePolicyUserPolicy 범위는 그룹 정책에 의해 설정되므로 변경되지 않습니다.

Set-ExecutionPolicy 사용자 기본 설정이 정책보다 더 제한적인 경우에도 그룹 정책을 재정의하지 않습니다.

컴퓨터 또는 사용자에 대해 그룹 정책 스크립트 실행 켜기 를 사용하도록 설정하면 사용자 기본 설정이 저장되지만 적용되지는 않습니다. PowerShell은 충돌을 설명하는 메시지를 표시합니다.