Varolan cevapların çoğu açıklamak How , ama çok az açıklamak niçin . İnternetteki yabancılardan, özellikle de güvenlik önlemlerini devre dışı bırakan koddan geçmeden önce, ne yaptığınızı tam olarak anlamanız gerekir. İşte bu sorun hakkında biraz daha ayrıntı.
TechNet'ten Yürütme İlkeleri Sayfası Hakkında :
Windows PowerShell yürütme ilkeleri, Windows PowerShell'in yapılandırma dosyalarını ve komut dosyalarını çalıştırma koşullarını belirlemenize olanak tanır.
PowerShell Temelleri - Yürütme İlkesi ve Kod İmzalama ile numaralandırıldığı gibi faydaları şunlardır:
- Yürütme Denetimi - Komut dosyalarını yürütmek için güven düzeyini denetleyin.
- Command Highjack - Yolumdaki komutların enjeksiyonunu engelleyin.
- Kimlik - Komut dosyası, güvendiğim bir geliştirici tarafından oluşturulmuş ve imzalanmış ve / veya güvendiğim bir Sertifika Yetkilisi'nden bir sertifika ile imzalanmış mı?
- Bütünlük - Komut dosyaları, kötü amaçlı yazılım veya kötü amaçlı kullanıcılar tarafından değiştirilemez.
Mevcut yürütme politikanızı kontrol etmek için çalıştırabilirsiniz Get-ExecutionPolicy
. Ama muhtemelen buradasınız çünkü değiştirmek istiyorsunuz.
Bunu yapmak için Set-ExecutionPolicy
cmdlet'i çalıştırırsınız.
Yürütme politikasını güncellerken iki büyük karar vereceksiniz.
Yürütme İlkesi Türü:
Restricted
† - Sistemde yerel, uzak veya indirilmiş Komut Dosyası çalıştırılamaz.
AllSigned
- Çalıştırılan tüm komut dosyalarının dijital olarak imzalanması gerekir.
RemoteSigned
- Tüm uzak komut dosyalarının (UNC) veya indirilenlerin imzalanması gerekir.
Unrestricted
- Her tür komut dosyası için imza gerekmez.
Yeni Değişimin Kapsamı
LocalMachine
† - Yürütme ilkesi bilgisayarın tüm kullanıcılarını etkiler.
CurrentUser
- Yürütme ilkesi yalnızca geçerli kullanıcıyı etkiler.
Process
- Yürütme ilkesi yalnızca geçerli Windows PowerShell işlemini etkiler.
† = Varsayılan
Örneğin : ilkeyi yalnızca CurrentUser için RemoteSigned olarak değiştirmek isterseniz, aşağıdaki komutu çalıştırırsınız:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Not : Yürütme ilkesini değiştirmek için PowerShell Yönetici Olarak çalıştırıyor olmanız gerekir . Normal moddaysanız ve yürütme ilkesini değiştirmeye çalışırsanız, aşağıdaki hatayı alırsınız:
'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' kayıt defteri anahtarına erişim reddedildi. Varsayılan (LocalMachine) kapsamının yürütme ilkesini değiştirmek için, Windows PowerShell'i "Yönetici olarak çalıştır" seçeneğiyle başlatın.
Internet'ten indirilmemiş (veya en azından UNC meta verilerini içermeyen) kendi komut dosyalarınızdaki dahili kısıtlamaları sıkılaştırmak istiyorsanız, ilkeyi yalnızca imzalı komut dosyalarını çalıştırmaya zorlayabilirsiniz. Kendi komut dosyalarınızı imzalamak için Scott Hanselman'ın PowerShell Komut Dosyalarını İmzalama başlıklı makalesindeki talimatları takip edebilirsiniz .
Not : Çoğu kişi Powershell'i açtıklarında bu hatayı alırlar çünkü PS başlatıldığında yapmaya çalıştığı ilk şey, ortamınızı istediğiniz gibi ayarlayan kullanıcı profili komut dosyanızı çalıştırmaktır.
Dosya genellikle şu konumda bulunur:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Powershell değişkenini çalıştırarak tam konumu bulabilirsiniz
$profile
Profilde önemsediğiniz bir şey yoksa ve güvenlik ayarlarınızla uğraşmak istemiyorsanız, sadece silebilirsiniz ve powershell yürütemeyeceği hiçbir şey bulamaz.