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'da başlayarak, varsayılan yürütme ilkesi Kısıtlanmamış'tır 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. Ayrıca betiklerin çalıştırılmadan önce dijital olarak imzalanıp imzalanmayacağı.

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

Her kapsamın yürütme ilkelerini öncelik sırasına göre 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-ExecutionPolicyRemoteSigned ilkesini belirtmek için ExecutionPolicy parametresini kullanır. Scope parametresi varsayılan kapsam değeri olan LocalMachine'i belirtir. 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 , LocalMachine kapsamının yürütme ilkesini Kısıtlı olarak ayarlamaya çalışır. LocalMachine daha kısıtlayıcıdır, ancak bir grup ilkesi çakştığı için etkili ilke değildir. Kısıtlanmış ilke kayıt defteri hive HKEY_LOCAL_MACHINE yazı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-ExecutionPolicyKısıtlı ilkeyi belirtmek için ExecutionPolicy parametresini kullanır. Scope parametresi varsayılan kapsam değeri olan LocalMachine'i belirtir. Cmdlet, Get-ChildItem kayıt defteri konumunu belirtmek için HKLM sağlayıcısıyla 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-ExecutionPolicybir Microsoft gönderir. PowerShell.ExecutionPolicy nesnesi işlem hattının aşağısı. Set-ExecutionPolicy işlem hattı girişini kabul eder ve ExecutionPolicy parametresini gerektirmez.

PS> 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 uzak bilgisayar olan Server01'i 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ı olan LocalMachine'e uygular.

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

Bu örnekte, belirtilen bir kapsam (CurrentUser) için yürütme ilkesinin nasıl ayarlanacağı gösterilmektedir. CurrentUser kapsamı 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, AllSigned ilkesini belirtmek için ExecutionPolicy parametresini kullanır. Scope parametresi CurrentUser öğesini belirtir. 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 AllSigned olur.

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

Bu örnekte, belirli bir kapsam için yürütme ilkesini kaldırmak için Tanımsız yürütme ilkesinin nasıl kullanıldığı 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, Tanımsız ilkesini belirtmek için ExecutionPolicy parametresini kullanır. Scope parametresi CurrentUser öğesini belirtir. 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

İşlem kapsamı 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-ExecutionPolicyAllSigned ilkesini belirtmek için ExecutionPolicy parametresini kullanır. Scope parametresi Process değerini belirtir. 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 bir betiğin engellemesini kaldırın

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

En iyi yöntem, cmdlet'ini kullanmadan Unblock-Fileönce betiğin kodunu okumak ve güvenli olduğunu doğrulamaktır. Unblock-File Cmdlet, betiklerin çalıştırılması 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-ExecutionPolicyRemoteSigned ilkesini belirtmek için ExecutionPolicy parametresini kullanır. İlke varsayılan kapsam olan LocalMachine için ayarlanır.

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

Start-ActivityTracker.ps1 betiği geçerli dizinden yürütülür. Betik dijital olarak imzalanmamış olduğundan, betik RemoteSigned tarafından engellenir.

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 engellemesini kaldırmak için Path parametresini kullanır.

Bunun yürütme ilkesini değiştirmediğini Unblock-File doğrulamak için RemoteSignedGet-ExecutionPolicy etkin yürütme ilkesini görüntüler.

Start-ActivityTracker.ps1betiği geçerli 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
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 Tanımsız olarak ayarlandıysa , Restricted tüm kullanıcılar için geçerli ilke olur.

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

  • Tümü İmzalandı. Yerel bilgisayarda yazılan betikler de dahil olmak üzere tüm betiklerin ve yapılandırma dosyalarının güvenilir bir yayımcı tarafından imzalı olmasını gerektirir.
  • Atla'ya geçin. Hiçbir şey engellenmez ve uyarı veya istem yoktur.
  • Varsayılan. Varsayılan yürütme ilkesini ayarlar. Windows istemcileri veya Windows sunucuları için RemoteSigned ile sınırlıdır.
  • 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.
  • Kısıtlı. Yapılandırma dosyalarını yüklemez veya betikleri çalıştırmaz. Windows istemci bilgisayarları için varsayılan yürütme ilkesi.
  • Tanımlanmamış. Kapsam için hiçbir yürütme ilkesi ayarlanmadı. Atanmış yürütme ilkesini, grup ilkesi tarafından ayarlanmayan bir kapsamdan kaldırır. Tüm kapsamlardaki yürütme ilkesi Tanımsız ise etkin yürütme ilkesi Kısıtlanmış olur.
  • Sınırsız. 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
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
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Yürütme ilkesinden etkilenen kapsamı belirtir. Varsayılan kapsam LocalMachine'dir.

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.
  • İşlem. Yalnızca geçerli PowerShell oturumunu etkiler.
  • CurrentUser. Yalnızca geçerli kullanıcıyı etkiler.
  • LocalMachine. Bilgisayarın tüm kullanıcılarını etkileyen varsayılan kapsam.

İşlem kapsamı 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.

CurrentUser kapsamı için yürütme ilkeleri kayıt defteri hive HKEY_LOCAL_USER yazılır.

LocalMachine kapsamı için yürütme ilkeleri kayıt defteri hive HKEY_LOCAL_MACHINE yazılır.

Type:ExecutionPolicyScope
Accepted values:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Position:1
Default value:LocalMachine
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
Accept pipeline input:False
Accept wildcard characters:False

Girişler

ExecutionPolicy

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-ExecutionPolicyMachinePolicy ve UserPolicy kapsamlarını değiştirmez, çünkü bunlar Grup İlkeleri tarafından ayarlanır.

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

bilgisayar veya kullanıcı için grup ilkesi Betik Yürütmeyi Aç etkinleştirildiyse, kullanıcı tercihi kaydedilir, ancak geçerli değildir. PowerShell, çakışmayı açıklayan bir ileti görüntüler.