Bu soru, soru gövdesi tarafından reddedilen veya asıl soruna değinmeyen yanıtları çekmeye devam ettiğinden, lütfen bilmeniz gerekenlerin bu basit özetini okuyun :
- Bu değil bir "Neden PowerShell benim varsayılan yükleme çalışmayacak komut?" soru.
- Bu değil bir "Neden PowerShell çalıştırma komut benim yükleme internetten indirilen olmaz?" soru.
- Soru,
RemoteSigned
yürütme politikasının neden olmaması gerektiği halde komut dosyasının yürütülmesini engellediğidir.RemoteSigned
olduğu tek Kullanmak istediğim yürütme politikası. Diğer, daha az kısıtlayıcı politikaların mevcut olduğunun farkındayım. Bu politikalar kabul edilebilir ikameler olsaydı, bunun yerine onları kullanırdım ve bu soru olmazdı.- Yürütme politikası zaten olarak ayarlanmıştır
RemoteSigned
. Onu değiştirmeRemoteSigned
içinRemoteSigned
bir çözüm değildir.- Komut dosyası yerel olarak oluşturulur ve saklanır.
- Komut dosyası engellenmemiş. Komut dosyası asla engellenmedi (önceki noktaya bakın).
- Betik dosyası engeli kaldırılamaz çünkü engeli kaldırılacak bir şey yoktur (önceki noktaya bakın).
- Komut dosyası bir yönetici tarafından yürütülür (yapılmaya çalışılır).
Windows PowerShell
ilgili tek uygulamadır. DeğilWindows PowerShell ISE
ne deCommand Prompt
ne de başka araçlar veya editörler ilgilidir.- Sorunun nedeni zaten tespit edildi (kabul edilen cevaba bakın). Yaklaşık 8 yıl sonra, uygulanabilir olsun veya olmasın diğer tüm bariz açıklamaların da yayınlandığını düşünüyorum. Eğer aksini düşünüyorsanız, lütfen soruyu ve mevcut cevapları , sizinkini eklemeden önce tamamını okuyun .
64 bit Windows 7 Professional'da Windows PowerShell 2.0 kullanıyorum. Desktop
Çalıştırmaya çalıştığımda aşağıdaki hataya neden olan bir komut dosyam var:
File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Hem bir etki alanı yöneticisi hem de yerel bir yöneticiyim ve çalıştırırsam Get-ExecutionPolicy -List
, Group Policy Object
PowerShell'i yapılandırmak için oluşturduğumun, RemoteSigned
yürütme ilkesini makine düzeyinde doğru şekilde uyguladığını görebiliyorum :
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Ben Komut dosyasını kendim yarattı Notepad
ve kullanılan Sysinternals ' streams
programı ve dosya Properties
komut internetten kaynaklı olduğu tedavi altına değil onaylamak için iletişim. Komut dosyasını bir etki alanı sunucusundaki bir ağ paylaşımına kopyalarsam, yürütülmesine izin verilir. Çalıştırırsam Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
, yerel komut dosyasının yürütülmesine hala izin verilmiyor, bu da kapsamdaki yürütme politikası MachinePolicy
öncelikli olacağından mantıklı geliyor .
about_Execution_Policies
( Güncel ; söz konusu zamanda ) tarafından belgelendiği üzere , RemoteSigned
politika şu anlama gelir:
Komut dosyaları çalışabilir.
İnternetten indirilen komut dosyaları ve yapılandırma dosyalarında (e-posta ve anlık mesajlaşma programları dahil) güvenilir bir yayıncıdan dijital imza gerektirir.
Çalıştırdığınız ve yerel bilgisayara (İnternetten indirilmemiş) yazdığınız komut dosyalarında dijital imza gerektirmez.
İnternet dışındaki kaynaklardan imzasız komut dosyaları çalıştırma riskleri ve imzalı ancak kötü niyetli komut dosyaları.
Komut dosyam imzalı değil, ancak hem yerel olarak oluşturulduğu hem de yürütüldüğü için yukarıdaki üçüncü madde işaretini karşılaması gerekiyor. Bu nedenle ...
- Komut dosyamın çalıştırılmasına neden izin verilmiyor?
- PowerShell neden komut dosyamın "dijital olarak imzalanmadığından" şikayet ediyor, bu gereksinim yalnızca İnternet'teki dosyalar için geçerliyken?
- PowerShell neden komut dosyasının bir ağ paylaşımından çalıştırıldığında imzalanmamasını artık umursamıyor?