PowerShell kullanıcılarının sıkça karşılaştığı “not digitally signed” (dijital olarak imzalanmamış) hatası, script’lerin çalıştırılmasını engelleyebilen can sıkıcı bir sorundur. Bu blog yazısında, bu hatanın nedenlerini ve çeşitli çözüm yöntemlerini detaylıca ele alacağız.
Hatanın Nedeni
PowerShell’in güvenlik politikaları, sisteminizi potansiyel kötü amaçlı script’lere karşı korumak için tasarlanmıştır. Varsayılan olarak, PowerShell yalnızca güvenilir kaynaklardan gelen ve dijital olarak imzalanmış script’leri çalıştırır. Bu nedenle, kendi yazdığınız veya güvenilir kaynaklardan indirdiğiniz script’ler bile bu hatayı verebilir.
Çözüm Yöntemleri
1. Execution Policy (Çalıştırma Politikası) Değiştirme
En yaygın çözüm, PowerShell’in execution policy ayarını geçici veya kalıcı olarak değiştirmektir:
powershell
Geçici çözüm (yalnızca mevcut oturum için)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Kalıcı çözüm (dikkatli olun)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Uyarı: Unrestricted politikası güvenlik riski oluşturabilir, sadece güvendiğiniz script’ler için kullanın.
2. Script’i Dijital Olarak İmzalama
Daha güvenli bir yaklaşım, script’inizi dijital sertifika ile imzalamaktır:
1. Code signing sertifikası edinin
2. Script’i imzalayın:
powershell
Set-AuthenticodeSignature -FilePath C:\path\to\script.ps1 -Certificate $cert
3. Script’i Komut Satırından Çalıştırma
Alternatif olarak, script’i aşağıdaki komutla çalıştırabilirsiniz:
cmd
powershell.exe -ExecutionPolicy Bypass -File “C:\path\to\script.ps1”
4. Script İçeriğini Doğrudan Çalıştırma
Script içeriğini kopyalayıp PowerShell’de doğrudan çalıştırabilirsiniz:
1. Script içeriğini kopyala
2. PowerShell’de yapıştır ve Enter’a bas
Güvenlik Uyarıları
Execution policy’yi değiştirmeden önce aşağıdaki noktaları göz önünde bulundurun:
– Yalnızca güvendiğiniz script’ler için politikayı gevşetin
– Mümkünse script’leri imzalamayı tercih edin
– İş bitince politikayı eski haline getirin:
powershell
Set-ExecutionPolicy -ExecutionPolicy Restricted
Sonuç
“Not digitally signed” hatası PowerShell’in güvenlik özelliklerinin bir parçasıdır. Geçici çözümler hızlı bir çıkış yolu sunsa da, uzun vadede script’lerinizi dijital olarak imzalamak en güvenli yaklaşım olacaktır. Hangi yöntemi seçerseniz seçin, güvenlik risklerini daima göz önünde bulundurmayı unutmayın.
PowerShell script’lerinizi sorunsuz çalıştırabilmeniz dileğiyle!