Aracılığıyla paylaş


Set-ExecutionPolicy

Windows bilgisayarlar için PowerShell yürütme ilkelerini ayarlar.

Syntax

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

Description

Cmdlet, Set-ExecutionPolicy Windows bilgisayarlar için PowerShell yürütme ilkelerini değiştirir. Daha fazla bilgi için bkz. about_Execution_Policies.

Windows olmayan bilgisayarlar için PowerShell 6.0 sürümünden itibaren varsayılan yürütme ilkesidir Unrestricted ve değiştirilemez. Set-ExecutionPolicy Cmdlet kullanılabilir, ancak PowerShell desteklenmediğini belirten bir konsol iletisi görüntüler.

Yürütme ilkesi, PowerShell güvenlik stratejisinin bir parçasıdır. Yürütme ilkeleri, PowerShell profiliniz gibi yapılandırma dosyalarını yükleyip yükleyemeyeceğinizi veya betik çalıştırıp çalıştıramayacağınızı belirler. Betiklerin çalıştırılmadan önce dijital olarak imzalanması gerekip gerekmediği.

Set-ExecutionPolicy Cmdlet'in varsayılan kapsamıdır ve LocalMachinebu, bilgisayarı kullanan herkesi etkiler. yürütme ilkesini değiştirmek için LocalMachinePowerShell'i Yönetici Olarak Çalıştır ile başlatın.

Her kapsamın yürütme ilkelerini görüntülemek için kullanın Get-ExecutionPolicy -List. PowerShell oturumunuzun etkin yürütme ilkesini görmek için parametresiz kullanın Get-ExecutionPolicy .

Örnekler

Örnek 1: Yürütme ilkesi ayarlama

Bu örnekte, yerel bilgisayar için yürütme ilkesinin nasıl ayarlanacağı gösterilmektedir.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List

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

Cmdlet, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini RemoteSigned kullanır. Scope parametresi varsayılan kapsam değerini LocalMachinebelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 2: bir grup ilkesi ile çakişen bir yürütme ilkesi ayarlama

Bu komut kapsamın LocalMachine yürütme ilkesini olarak ayarlamaya Restrictedçalışır. LocalMachinedaha kısıtlayıcıdır, ancak bir grup ilkesi çakışması nedeniyle etkili ilke değildir. İlke Restricted kayıt defteri kovanına HKEY_LOCAL_MACHINEyazılır.

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-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini Restricted kullanır. Scope parametresi varsayılan kapsam değerini LocalMachinebelirtir. Cmdlet, Get-ChildItem kayıt defteri konumunu belirtmek için sürücüyle birlikte HKLM: Path parametresini kullanır.

Örnek 3: Yürütme ilkesini uzak bir bilgisayardan yerel bilgisayara uygulama

Bu komut, uzak bir bilgisayardan yürütme ilkesi nesnesini alır ve ilkeyi yerel bilgisayarda ayarlar. Get-ExecutionPolicy işlem hattında bir Microsoft.PowerShell.ExecutionPolicy nesnesi gönderir. Set-ExecutionPolicy işlem hattı girişini kabul eder ve ExecutionPolicy parametresini gerektirmez.

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

Invoke-Command Cmdlet yerel bilgisayarda yürütülür ve ScriptBlock'ı uzak bilgisayara gönderir. ComputerName parametresi, Server01 adlı uzak bilgisayarı belirtir. ScriptBlock parametresi uzak bilgisayarda çalışırGet-ExecutionPolicy. Get-ExecutionPolicy nesnesi işlem hattına Set-ExecutionPolicygönderilir. Set-ExecutionPolicy yürütme ilkesini yerel bilgisayarın varsayılan kapsamına LocalMachineuygular.

Örnek 4: Yürütme ilkesinin kapsamını ayarlama

Bu örnekte, belirtilen kapsam CurrentUseriçin yürütme ilkesinin nasıl ayarlanacağı gösterilmektedir. Kapsam CurrentUser yalnızca bu kapsamı ayarlayan kullanıcıyı etkiler.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List

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

Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini AllSigned kullanır. Scope parametresi öğesini CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Kullanıcının etkin yürütme ilkesi olur AllSigned.

Örnek 5: Geçerli kullanıcının yürütme ilkesini kaldırma

Bu örnekte, belirli bir kapsam için yürütme ilkesini kaldırmak için yürütme ilkesinin nasıl kullanıldığı Undefined gösterilmektedir.

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List

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

Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini Undefined kullanır. Scope parametresi öğesini CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 6: Geçerli PowerShell oturumu için yürütme ilkesini ayarlama

Kapsam Process yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi ortam değişkenine $env:PSExecutionPolicyPreference kaydedilir ve oturum kapatıldığında silinir.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process

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

, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini AllSigned kullanır. Scope parametresi değerini Processbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 7: Yürütme ilkesini değiştirmeden çalıştırmak için betiğin engellemesini kaldırma

Bu örnekte, yürütme ilkesinin RemoteSigned imzalanmamış betikleri çalıştırmanızı nasıl önlediği gösterilmektedir.

En iyi yöntem, cmdlet'i kullanmadan Unblock-Fileönce betiğin kodunu okumak ve güvenli olduğunu doğrulamaktır. Unblock-File Cmdlet, betiklerin çalışabilmesi için engellemesini kaldırır, ancak yürütme ilkesini değiştirmez.

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 ilkeyi belirtmek için ExecutionPolicy parametresini RemoteSigned kullanır. İlke varsayılan kapsam LocalMachineolan için ayarlanır.

cmdlet'i Get-ExecutionPolicy , geçerli PowerShell oturumu için etkili yürütme ilkesi olduğunu RemoteSigned gösterir.

Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by Betik dijital olarak imzalanmamış olduğundan RemoteSigned' öğesini seçin.

Bu örnekte betiğin kodu gözden geçirilmiş ve çalıştırılması güvenli olarak doğrulanmıştır. Cmdlet, Unblock-File betiğin engelini kaldırmak için Path parametresini kullanır.

Bunun yürütme ilkesini değiştirmediğini Unblock-File doğrulamak için geçerli Get-ExecutionPolicy yürütme ilkesini RemoteSignedgörüntüler.

betiği geçerli Start-ActivityTracker.ps1 dizinden yürütülür. Cmdlet'i tarafından Unblock-File engeli kaldırıldığı için betik çalışmaya başlar.

Parametreler

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ExecutionPolicy

Yürütme ilkesini belirtir. Grup İlkeleri yoksa ve her kapsamın yürütme ilkesi olarak Undefinedayarlanırsa Restricted , tüm kullanıcılar için geçerli ilke olur.

Kabul edilebilir yürütme ilkesi değerleri şunlardır:

  • AllSigned. Tüm betiklerin ve yapılandırma dosyalarının, yerel bilgisayarda yazılan betikler de dahil olmak üzere güvenilir bir yayımcı tarafından imzalı olmasını gerektirir.
  • Bypass. Hiçbir şey engellenmez ve uyarı veya istem yoktur.
  • Default. Varsayılan yürütme ilkesini ayarlar. Restricted windows istemcileri veya RemoteSigned Windows sunucuları için.
  • RemoteSigned. İnternet'ten indirilen tüm betiklerin ve yapılandırma dosyalarının güvenilir bir yayımcı tarafından imzalı olmasını gerektirir. Windows sunucu bilgisayarları için varsayılan yürütme ilkesi.
  • Restricted. Yapılandırma dosyalarını yüklemez veya betikleri çalıştırmaz. Windows istemci bilgisayarları için varsayılan yürütme ilkesi.
  • Undefined. Kapsam için hiçbir yürütme ilkesi ayarlanmadı. Atanmış bir yürütme ilkesini, grup ilkesi tarafından ayarlanmayan bir kapsamdan kaldırır. Tüm kapsamlardaki yürütme ilkesi ise Undefined, etkin yürütme ilkesi olur Restricted.
  • Unrestricted. PowerShell 6.0'da başlayarak, bu Windows olmayan bilgisayarlar için varsayılan yürütme ilkesidir ve değiştirilemez. Tüm yapılandırma dosyalarını yükler ve tüm betikleri çalıştırır. İnternet'ten indirilen imzasız bir betik çalıştırırsanız, çalışmadan önce izniniz istenir.
Type:ExecutionPolicy
Accepted values:AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

Tüm onay istemlerini bastırır. Beklenmeyen sonuçlardan kaçınmak için bu parametreye dikkat edin.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Yürütme ilkesinden etkilenen kapsamı belirtir. Varsayılan kapsam şeklindedir LocalMachine.

Etkin yürütme ilkesi, öncelik sırasına göre aşağıdaki gibi belirlenir:

  • MachinePolicy- Bilgisayarın tüm kullanıcıları için bir grup ilkesi tarafından ayarlanır
  • UserPolicy- Bilgisayarın geçerli kullanıcısı için bir grup ilkesi tarafından ayarlanır
  • Process - Yalnızca geçerli PowerShell oturumunu etkiler
  • LocalMachine - Bilgisayarın tüm kullanıcılarını etkileyen varsayılan kapsam
  • CurrentUser - Yalnızca geçerli kullanıcıyı etkiler

Kapsam Process yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi, kayıt defteri yerine ortam değişkenine $env:PSExecutionPolicyPreferencekaydedilir. PowerShell oturumu kapatıldığında değişken ve değer silinir.

Kapsamın CurrentUser yürütme ilkeleri kayıt defteri kovanına HKEY_LOCAL_USERyazılır.

Kapsamın LocalMachine yürütme ilkeleri kayıt defteri kovanına HKEY_LOCAL_MACHINEyazılır.

Type:ExecutionPolicyScope
Accepted values:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Position:1
Default value:LocalMachine
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

ExecutionPolicy

Bir yürütme ilkesi nesnesini bu cmdlet'e yöneltebilirsiniz.

String

Yürütme ilkesinin adını içeren bir dizeyi bu cmdlet'e aktarabilirsiniz.

Çıkışlar

None

Bu cmdlet çıkış döndürmez.

Notlar

Set-ExecutionPolicyve UserPolicy kapsamları, Grup İlkeleri tarafından ayarlandığı için değiştirmezMachinePolicy.

Set-ExecutionPolicykullanıcı tercihi ilkeden daha kısıtlayıcı olsa bile grup ilkesi geçersiz kılmaz.

Grup ilkesi Betik Yürütmeyi Aç özelliği bilgisayar veya kullanıcı için etkinleştirildiyse, kullanıcı tercihi kaydedilir, ancak etkili olmaz. PowerShell, çakışmayı açıklayan bir ileti görüntüler.