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şlayan 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ırabileceğinizi belirler. Ayrıca betiklerin çalıştırılmadan önce dijital olarak imzalanması gerekip gerekmediği.
Set-ExecutionPolicy
Cmdlet'in varsayılan kapsamıdır ve LocalMachine
bu, bilgisayarı kullanan herkesi etkiler. için yürütme ilkesini değiştirmek için LocalMachine
PowerShell'i farklı çalıştır Yönetici istrator 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 LocalMachine
belirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy
.
Örnek 2: Grup İlkesi ile çakişen bir yürütme ilkesi ayarlama
Bu komut, kapsamın LocalMachine
yürütme ilkesini olarak ayarlamaya Restricted
çalışır.
LocalMachine
daha kısıtlayıcıdır, ancak bir Grup İlkesi ile çakşır olduğundan etkili ilke değildir. İlke Restricted
kayıt defteri kovanına 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-ExecutionPolicy
ilkeyi belirtmek için ExecutionPolicy parametresini Restricted
kullanır. Scope parametresi varsayılan kapsam değerini LocalMachine
belirtir. 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ına 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 uzak bilgisayar Olan Server01'i belirtir. ScriptBlock parametresi uzak bilgisayarda çalışırGet-ExecutionPolicy
. Get-ExecutionPolicy
nesnesi işlem hattına Set-ExecutionPolicy
gönderilir.
Set-ExecutionPolicy
yürütme ilkesini yerel bilgisayarın varsayılan kapsamı LocalMachine
olan öğesine uygular.
Örnek 4: Yürütme ilkesinin kapsamını ayarlama
Bu örnekte, CurrentUser
belirtilen kapsam için bir 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 CurrentUser
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 olur AllSigned
.
Ö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
ilkeyi belirtmek için ExecutionPolicy parametresini Undefined
kullanır. Scope parametresi öğesini CurrentUser
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
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 Process
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ı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'ini kullanmadan önce betiğin Unblock-File
kodunu okumak ve güvenli olduğunu doğrulamaktır. Unblock-File
Cmdlet, çalıştırılabilmeleri için betiklerin 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 LocalMachine
olan 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'.
Bu örnekte betiğin kodu gözden geçirildi ve çalıştırılması güvenli olarak doğrulandı. 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 etkin Get-ExecutionPolicy
yürütme ilkesini RemoteSigned
görüntüler.
Betik, Start-ActivityTracker.ps1
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 |
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 Undefined
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.Restricted
veya WindowsRemoteSigned
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 İlkesi tarafından ayarlanmayan bir kapsamdan kaldırır. Tüm kapsamlardaki yürütme ilkesi iseUndefined
, etkin yürütme ilkesi olurRestricted
.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.
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 gizler. Beklenmeyen sonuçlardan kaçınmak için bu parametreyle dikkatli olun.
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 İlkesi tarafından ayarlanırUserPolicy
- Bilgisayarın geçerli kullanıcısı için bir Grup İlkesi tarafından ayarlanırProcess
- Yalnızca geçerli PowerShell oturumunu etkilerLocalMachine
- Bilgisayarın tüm kullanıcılarını etkileyen varsayılan kapsamCurrentUser
- 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:PSExecutionPolicyPreference
kaydedilir. 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_USER
yazılır.
Kapsamın LocalMachine
yürütme ilkeleri kayıt defteri kovanına HKEY_LOCAL_MACHINE
yazı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
Yürütme ilkesi nesnesini bu cmdlet'e yöneltebilirsiniz.
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
ve UserPolicy
kapsamları, Grup İlkeleri tarafından ayarlandığından değişmezMachinePolicy
.
Set-ExecutionPolicy
kullanıcı tercihi ilkeden daha kısıtlayıcı olsa bile Grup İlkesi'ni geçersiz kılmaz.
Bilgisayar veya kullanıcı için Grup İlkesi 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.
İlişkili Bağlantılar
PowerShell