Windows Server 2008 R2'de PowerShell Komut Dosyası Yürütme Sorunlarını Çözme

Windows Server 2008 R2'de PowerShell Komut Dosyası Yürütme Sorunlarını Çözme
Windows Server 2008 R2'de PowerShell Komut Dosyası Yürütme Sorunlarını Çözme

PowerShell Betiği Yürütme Kısıtlamalarında Sorun Giderme

Kullanıcılar, Windows Server 2008 R2 ile çalışırken, sistemde PowerShell komut dosyalarının yürütülmesinin devre dışı bırakıldığını belirten bir hatayla karşılaşabilirler. Bu sorun, yürütme politikasını Kısıtlanmamış olarak ayarladıktan sonra bile cmd.exe aracılığıyla bir komut dosyası çalıştırmayı denediğinizde ortaya çıkabilir.

Yürütme ilkesinin Kısıtlanmamış olarak ayarlandığı doğrulanmasına rağmen komut dosyaları yine de yürütülemeyebilir, bu da hayal kırıklığına neden olabilir ve ilerlemenin engellenmesine neden olabilir. Bu kılavuz, bu sorunun yaygın nedenlerini araştıracak ve başarılı komut dosyası yürütülmesini sağlamak için adımlar sağlayacaktır.

Emretmek Tanım
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force Geçerli PowerShell oturumu için komut dosyası yürütme ilkesini geçici olarak Baypas olarak ayarlayarak tüm komut dosyalarının kısıtlama olmadan yürütülmesine olanak tanır.
powershell -File .\Management_Install.ps1 Belirtilen PowerShell betik dosyasını komut satırından yürütür.
New-SelfSignedCertificate Güvenilir yürütme amacıyla PowerShell betiklerini imzalamak için kullanılabilecek, otomatik olarak imzalanan yeni bir sertifika oluşturur.
Export-Certificate Sertifikayı bir dosyaya aktarır ve bu dosya daha sonra diğer sertifika depolarına aktarılabilir.
Import-Certificate Bir sertifikayı Güvenilir Yayımcılar veya Kök Sertifika Yetkilileri gibi belirli bir sertifika deposuna aktarır.
Set-AuthenticodeSignature Belirtilen bir sertifikayla bir PowerShell betiğini imzalayarak betik imzalama ilkelerinin etkin olduğu sistemlerde yürütülmesine olanak tanır.

PowerShell'de Komut Dosyası Yürütme İlkelerini Anlama ve Uygulama

Sağlanan komut dosyaları, Windows Server 2008 R2'de PowerShell komut dosyası yürütmesinin devre dışı bırakılması sorununu gidermeyi amaçlamaktadır. İlk komut dosyası, **Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force** kullanarak geçerli PowerShell oturumu için yürütme politikasını **Bypass** olarak ayarlar. Bu komut, tüm komut dosyalarının geçici olarak kısıtlama olmadan çalışmasına izin verir. Komut dosyası daha sonra **Management_Install.ps1** komut dosyasını içeren dizine gider ve onu **powershell .Management_Install.ps1** kullanarak çalıştırır. Bu yaklaşım, yürütme politikası değişikliğinin yalnızca geçici olmasını ve sistemin genel güvenlik duruşunu etkilememesini sağlar.

Bir toplu iş dosyası olan ikinci komut dosyası da yürütme politikasını **Bypass** olarak ayarlar ancak bunu komut satırından yapar. Bunu başarmak için **powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"** komutunu kullanır. Yürütme ilkesini değiştirdikten sonra komut dosyası, komut dosyası dizinine gider ve **powershell -File .Management_Install.ps1** kullanarak PowerShell komut dosyasını çalıştırır. Toplu komut dosyası, komut istemi penceresini açık tutmak için bir **pause** komutuyla sona erer ve böylece kullanıcının çıktı veya hata mesajlarını görmesine olanak sağlanır. Bu yöntem, süreci otomatikleştirmek ve daha büyük toplu işlemlere entegre etmek için kullanışlıdır.

PowerShell'de Komut Dosyası İmzalama ve Güvenlik

Üçüncü betik örneği, daha katı yürütme politikalarına uymak için bir PowerShell betiğinin nasıl imzalanacağını gösterir. Öncelikle **New-SelfSignedCertificate** kullanılarak kendinden imzalı bir sertifika oluşturulur. Bu sertifika daha sonra **İhracat Sertifikası** ile dışa aktarılabilir ve **İthalat Sertifikası** kullanılarak güvenilir sertifika depolarına aktarılabilir. Sertifika **TrustedPublisher** ve **Root** depolarına aktarıldığında sistem bu sertifikayla imzalanan komut dosyalarına güvenecektir. **Management_Install.ps1** betiği daha sonra **Set-AuthenticodeSignature** kullanılarak imzalanır.

Komut dosyası imzalama, sistemde yalnızca güvenilir komut dosyalarının çalıştırılabilmesini sağlayarak ek bir güvenlik katmanı sağlar. Bu yaklaşım özellikle yürütme politikalarının **AllSigned** veya **RemoteSigned** olarak ayarlandığı sıkı güvenlik gereksinimleri olan ortamlarda kullanışlıdır. Yöneticiler komut dosyasını imzalayarak komut dosyalarının tahrif edilmediğinden ve güvenilir bir kaynaktan geldiğinden emin olabilir, böylece olası güvenlik riskleri azaltılabilir. Bu yöntem, güvenliği işlevsellikle birleştirerek sistem bütünlüğünü korurken gerekli komut dosyalarının çalıştırılmasına olanak tanır.

PowerShell'de Yürütme İlkesini Baypas Edecek Şekilde Ayarlama

PowerShell Betiği

# Ensure the script execution policy is set to Bypass
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

# Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

# Execute the PowerShell script
powershell .\Management_Install.ps1

Yürütme İlkesini Değiştirmek ve PowerShell Komut Dosyasını Çalıştırmak için Toplu Komut Dosyasını Kullanma

Toplu Komut Dosyası

@echo off

:: Set PowerShell execution policy to Bypass
powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"

:: Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

:: Run the PowerShell script
powershell -File .\Management_Install.ps1

pause

İmzalı PowerShell Betiği Oluşturma

İmzalama ile PowerShell Komut Dosyası

# Sample script content
Write-Output "Executing Management Install Script"

# Save this script as Management_Install.ps1

# To sign the script, follow these steps:
# 1. Create a self-signed certificate (if you don't have one)
$cert = New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My"

# 2. Export the certificate to a file
Export-Certificate -Cert $cert -FilePath "C:\PowerShellLocalCert.cer"

# 3. Import the certificate to Trusted Publishers and Trusted Root Certification Authorities
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\Root"

# 4. Sign the script with the certificate
Set-AuthenticodeSignature -FilePath .\Management_Install.ps1 -Certificate $cert

Komut Dosyası Yürütme Politikası Uyumluluğunu ve Sistem Güvenliğini Sağlama

Windows Server 2008 R2'yi yönetirken, PowerShell'de bulunan farklı yürütme ilkelerini ve bunların komut dosyası yürütmeyi nasıl etkilediğini anlamak çok önemlidir. PowerShell yürütme ilkeleri, potansiyel olarak zararlı komut dosyalarının yürütülmesini önlemek için tasarlanmıştır. Dört ana politika **Restricted**, **AllSigned**, **RemoteSigned** ve **Unrestricted**'dir. **Kısıtlı** varsayılan politikadır ve herhangi bir komut dosyasının çalıştırılmasına izin vermez. **AllSigned**, tüm komut dosyalarının ve yapılandırma dosyalarının güvenilir bir yayıncı tarafından imzalanmasını gerektirir. **RemoteSigned**, internetten indirilen tüm komut dosyalarının ve yapılandırma dosyalarının güvenilir bir yayıncı tarafından imzalanmasını gerektirir ancak yerel olarak oluşturulan komut dosyalarının imza olmadan çalıştırılmasına izin verir.

Bu ilkeleri anlamak, yöneticilerin ortamları için doğru güvenlik düzeyini seçmelerine yardımcı olur. Komut dosyalarının düzenli olarak yürütülmesinin gerektiği senaryolarda, politikanın **Sınırsız** olarak ayarlanması riskli olabilir; çünkü bu, tüm komut dosyalarının herhangi bir kısıtlama olmaksızın çalışmasına olanak tanır. Bunun yerine yöneticiler, güvenliği işlevsellikle dengelemek için **RemoteSigned** veya **AllSigned** kullanmayı düşünmelidir. Yöneticiler, komut dosyalarını imzalayarak ve sertifikaları yöneterek sistemlerinde yalnızca güvenilir komut dosyalarının çalıştırılmasını sağlayabilir ve böylece kötü amaçlı kod çalıştırma riskini azaltabilir.

PowerShell Betiği Yürütme İlkeleriyle İlgili Sık Sorulan Sorular ve Yanıtlar

  1. Sistemimdeki mevcut yürütme politikasını nasıl kontrol edebilirim?
  2. Komutu kullanın Get-ExecutionPolicy Geçerli yürütme ilkesini kontrol etmek için PowerShell'de.
  3. Tüm kullanıcılar için yürütme politikasını kalıcı olarak nasıl değiştirebilirim?
  4. Komutu kullanın Set-ExecutionPolicy -ExecutionPolicy [PolicyName] -Scope LocalMachine Tüm kullanıcılar için yürütme politikasını değiştirmek için.
  5. Politika kısıtlamaları nedeniyle yürütülemeyen bir komut dosyasıyla karşılaşırsam ne yapmalıyım?
  6. kullanarak politikayı geçici olarak **Bypass** olarak ayarlayın. Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process ve betiği çalıştırın.
  7. **Kısıtlamasız** politikasını kullanmak güvenli midir?
  8. Üretim ortamlarında **Sınırsız** kullanılması önerilmez; çünkü bu, tüm komut dosyalarının çalıştırılmasına izin verir ve bu bir güvenlik riski oluşturabilir.
  9. PowerShell betiğini nasıl imzalarım?
  10. Kullanarak kendinden imzalı bir sertifika oluşturun New-SelfSignedCertificate ve ardından komut dosyasını kullanarak imzalayın Set-AuthenticodeSignature.
  11. Betik yürütmeyi yalnızca güvenilen betiklerle sınırlayabilir miyim?
  12. Evet, yürütme politikasını **AllSigned** veya **RemoteSigned** olarak ayarlayıp komut dosyalarınızı imzalayarak.
  13. **AllSigned** ve **RemoteSigned** politikaları arasındaki fark nedir?
  14. **AllSigned** tüm komut dosyalarının güvenilir bir yayıncı tarafından imzalanmasını gerektirirken **RemoteSigned** yalnızca internetten indirilen komut dosyalarının imzalanmasını gerektirir.
  15. Komut dosyası imzalama için kendinden imzalı bir sertifikayı nasıl oluşturabilirim?
  16. Komutu kullanın New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My" Kendinden imzalı bir sertifika oluşturmak için.
  17. Komut dosyası yürütme ilkelerini devre dışı bırakmanın güvenlik riskleri nelerdir?
  18. Komut dosyası yürütme ilkelerini devre dışı bırakmak, sisteminizi kötü amaçlı komut dosyalarına maruz bırakabilir ve bu da olası güvenlik ihlallerine ve veri kaybına yol açabilir.

Temel Çıkarımlar

Doğru PowerShell yürütme ilkesinin sağlanması, komut dosyalarının Windows Server 2008 R2'de çalıştırılması için çok önemlidir. Politikayı şu şekilde ayarlama: Bypass veya toplu iş dosyalarının kullanılması, yürütme sorunlarını geçici olarak çözebilir, ancak komut dosyalarının imzalanması daha güvenli, uzun vadeli bir çözüm sunar. Yöneticiler, farklı yürütme politikalarının güvenlik sonuçlarının farkında olmalı ve güvenliği operasyonel ihtiyaçlarla dengeleyen önlemleri uygulamalıdır.