PowerShell Windows sistemlerinde script ve komut dosyalarının çalıştırılma politikasını düzenleyen bir güvenlik stratejisine sahiptir. Bu politikalardan biri de Set-ExecutionPolicy cmdlet’idir. Bu makalede Set-ExecutionPolicy komutunun nasıl kullanıldığı hangi parametreleri desteklediği ve farklı kullanım senaryoları ele alınacaktır.
Set-ExecutionPolicy cmdlet’i Windows bilgisayarlar için PowerShell çalıştırma politikasını değiştirmek için kullanılır. İlgili politikanın kapsamını ve seviyesini belirlemek mümkün olur.
PowerShell 6.0 ve sonraki sürümlerde Windows dışındaki sistemlerde Set-ExecutionPolicy varsayılan olarak Unrestricted olarak ayarlanmıştır ve değiştirilemez.
Execution Policy PowerShell aşağıdaki çalıştırma politikalarını destekler:
- Restricted: Scritplerin çalıştırılmasına izin vermez.
- AllSigned: Tüm scriptlerin güvenilir bir yayıncı tarafından imzalanmış olması gerekir.
- RemoteSigned: Yalnızca internetten indirilen script’lerin imzalanması gerekir.
- Unrestricted: Tüm scriptleri çalıştırılabilir ancak internetten indirilenler için uyarı verilir.
- Bypass: Hiçbir betik engellenmez.
- Undefined: Hiçbir belirlenmiş politika yoktur.
Set-ExecutionPolicy Kullanımı Komutun genel kullanım yapısı aşağıdaki gibidir:
Set-ExecutionPolicy [-ExecutionPolicy] <ExecutionPolicy> [[-Scope] <ExecutionPolicyScope>] [-Force] [-WhatIf] [-Confirm]
Komut Parametreleri;
- ExecutionPolicy: Uygulanacak çalıştırma politikası.
- Scope: Politikanın hangi seviyede uygulanacağını belirler (LocalMachine, CurrentUser, vb.).
- Force: Onay istemini atlar ve işlemi zorlar.
- WhatIf: Komutun ne yapacağını simüle eder ama gerçekleştirmez.
Set-ExecutionPolicy Komutuna Ait Örnekler;
Örnek 1: LocalMachine İçin ExecutionPolicy Ayarlanması
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Bu komut ile tüm kullanıcılar için RemoteSigned politikasını uygular.
Örnek 2: Group Policy Çatışması Olan Durumlar
Eğer bir Grup Politikaları (Group Policy) mevcutsa bu komutun etkili olup olmadığı Get-ExecutionPolicy -List komutu ile kontrol edilmelidir.
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine
Örnek 3: Uzaktaki Bir Bilgisayarın ExecutionPolicy Ayarını Uygulanması
Aşağıdaki komut ile WebServer01 isimli uzaktaki bir bilgisayardan execution policy bilgisini alır ve yerel makineye uygular.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Örnek 4: Belirli Bir Kullanıcı İçin Policy Belirleme
Aşağıdaki komut ile yalnızca mevcut kullanıcı için execution policy belirlenir.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Örnek 5: Belirli Bir Kullanıcı için Execution Policy Kaldırmak
Aşağıdaki komut CurrentUser kapsamındaki execution policy ayarını kaldırır.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Örnek 6: Geçici (Sadece Geçerli Oturumda) Execution Policy Belirleme
Aşağıdaki komut sadece mevcut PowerShell oturumu boyunca geçerli olacak bir execution policy belirler.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Örnek 7: Bir Betiği (Script) Çalıştırma Politikalarını Değiştirmeden Çalıştırma
Aşaüıdaki komut Start-ActivityTracker.ps1 dosyasının engellemesini kaldırır ancak execution policy değişmez.
Unblock-File -Path .\Start-ActivityTracker.ps1