Aracılığıyla paylaş


Set-ExecutionPolicy

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

Sözdizimi

All

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

Description

Set-ExecutionPolicy cmdlet'i 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 Unrestricted ve değiştirilemez. Set-ExecutionPolicy cmdlet'i 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ırabileceğinizi belirler. Ayrıca betiklerin çalıştırılmadan önce dijital olarak imzalanması gerekip gerekmediği.

Set-ExecutionPolicy cmdlet'inin varsayılan kapsamı, bilgisayarı kullanan herkesi etkileyen LocalMachine'dir. LocalMachineyü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 görüntülemek için Get-ExecutionPolicy -Listkullanın. PowerShell oturumunuzun etkin yürütme ilkesini görmek için parametresiz Get-ExecutionPolicy kullanın.

Ö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

Set-ExecutionPolicy cmdlet'i, ilkesini belirtmek için RemoteSigned parametresini kullanır. Kapsam parametresi, LocalMachinevarsayılan kapsam değerini belirtir. Yürütme ilkesi ayarlarını görüntülemek için Get-ExecutionPolicy parametresiyle cmdlet'ini kullanın.

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

Bu komut, LocalMachine kapsamının yürütme ilkesini Restrictedolarak ayarlamaya çalışır. LocalMachine daha kısıtlayıcıdır, ancak bir Grup İlkesi ile çakşır olduğundan etkili ilke değildir. Restricted ilkesi kayıt defteri hive 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

Set-ExecutionPolicy cmdlet'i, ilkesini belirtmek için Restricted parametresini kullanır. Kapsam parametresi, LocalMachinevarsayılan kapsam değerini belirtir. Get-ChildItem cmdlet'i kayıt defteri konumunu belirtmek için sürücüsüyle HKLM: 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, Microsoft.PowerShell.ExecutionPolicy nesnesini işlem hattına 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'i yerel bilgisayarda yürütülür ve ScriptBlock uzak bilgisayara gönderir. ComputerName parametresi, Server01uzak bilgisayarı belirtir. ScriptBlock parametresi uzak bilgisayarda Get-ExecutionPolicy çalıştırır. Get-ExecutionPolicy nesnesi işlem hattına Set-ExecutionPolicygönderilir. Set-ExecutionPolicy yürütme ilkesini yerel bilgisayarın varsayılan kapsamı olan LocalMachineuygular.

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

Bu örnekte, CurrentUserbelirtilen kapsam için bir 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, ilkesini belirtmek için AllSigned parametresini kullanır. Kapsamı parametresi CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için Get-ExecutionPolicy parametresiyle cmdlet'ini kullanın.

Kullanıcının etkin yürütme ilkesi AllSignedolur.

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

Bu örnekte, belirtilen kapsam için bir yürütme ilkesini kaldırmak için yürütme ilkesinin nasıl kullanılacağı 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, ilkesini belirtmek için Undefined parametresini kullanır. Kapsamı parametresi CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için Get-ExecutionPolicy parametresiyle cmdlet'ini kullanın.

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

Process kapsamı yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi $Env:PSExecutionPolicyPreference ortam değişkenine 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, ilkesini belirtmek için AllSigned parametresini kullanır. Kapsam parametresi Processdeğerini belirtir. Yürütme ilkesi ayarlarını görüntülemek için Get-ExecutionPolicy parametresiyle cmdlet'ini kullanın.

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

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

Betiğin kodunu okumak ve cmdlet'ini kullanarak önce güvenli doğrulamak en iyi yöntemdir. Unblock-File cmdlet, betiklerin çalıştırılabilmesi için engellerini 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, ilkesini belirtmek için RemoteSigned parametresini kullanır. Politika, LocalMachinevarsayılan kapsam için ayarlanır.

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

Start-ActivityTracker.ps1 betiği bulunduğunuz dizinden yürütülür. Betik dijital olarak imzalı olmadığından betik RemoteSigned tarafından engellenir.

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

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

Start-ActivityTracker.ps1 betiği mevcut dizinden yürütülür. Betik, Unblock-File cmdlet'i tarafından engeli kaldırıldığından çalışmaya başlar.

Parametreler

-Confirm

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

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Cf

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-ExecutionPolicy

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

Kabul edilebilir yürütme ilkesi değerleri aşağıdaki gibidir:

  • AllSigned. 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.
  • Bypass. Hiçbir şey engellenmez ve uyarı veya istem yoktur.
  • Default. Varsayılan yürütme ilkesini ayarlar. Windows istemcileri için Restricted veya Windows sunucuları için RemoteSigned.
  • 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 İlkesi tarafından ayarlanmayan bir kapsamdan kaldırır. Tüm kapsamlardaki yürütme ilkesi Undefinedise, etkin yürütme ilkesi 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ıştırılmadan önce izniniz istenir.

Parametre özellikleri

Tür:ExecutionPolicy
Default value:None
Kabul edilen değerler:AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Force

Tüm onay istemlerini gizler. Beklenmeyen sonuçlardan kaçınmak için bu parametreyle dikkatli olun.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Scope

Yürütme ilkesinden etkilenen kapsamı belirtir. Varsayılan kapsam 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 Grup İlkesi tarafından ayarlanır
  • UserPolicy - Bilgisayarın geçerli kullanıcısı için Grup İlkesi 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

Process 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 HKEY_LOCAL_USERkayıt defteri kovanına yazılır.

LocalMachine kapsamı için yürütme ilkeleri HKEY_LOCAL_MACHINEkayıt defteri kovanına yazılır.

Parametre özellikleri

Tür:ExecutionPolicyScope
Default value:LocalMachine
Kabul edilen değerler:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-WhatIf

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

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Wi

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

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-ExecutionPolicy, Grup İlkeleri tarafından ayarlandığından MachinePolicy ve UserPolicy kapsamlarını değiştirmez.

Set-ExecutionPolicy, kullanıcı tercihi ilkeden daha kısıtlayıcı olsa bile Grup İlkesi'ni geçersiz kılmaz.

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