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 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çinRestrictedveya Windows sunucuları içinRemoteSigned. -
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 ilkesiUndefinedise, etkin yürütme ilkesiRestricted. -
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.