Microsoft

Windows 11 24H2 Sonrası Çalışmayan Scriptler: PowerShell 2.0 Hatası ve Çözümü

Windows 11’in en yeni büyük güncellemesi olan 24H2 sürümü, beraberinde birçok performans iyileştirmesi getirse de, eski sistemlerden kalan bazı alışkanlıkları tamamen bozdu. Son günlerde birçok kullanıcı ve IT uzmanı; yıllardır sorunsuz çalışan .bat, .cmd veya .ps1 scriptlerinin bir anda “sessizce” başarısız olduğundan şikayetçi.

Eğer sizin de kurulum scriptleriniz açıldığı gibi kapanıyor veya hata vermeden işlemi yarıda kesiyorsa, suçlu muhtemelen PowerShell 2.0 çağrısıdır. İşte bu sorunun nedeni ve kesin çözüm adımları.

Windows 11 24H2’de Scriptler Neden Bozuluyor?

Windows 11 24H2 ile birlikte Microsoft, güvenliği artırmak adına eski ve zafiyet barındırabilen bileşenleri devre dışı bırakmaya devam ediyor. Birçok eski script, geriye dönük uyumluluk sağlamak amacıyla PowerShell’i başlatırken -Version 2 parametresini kullanır.

Ancak yeni sürümde bu parametre çağrıldığında, sistem PowerShell 2.0 motorunu bulamadığı veya güvenlik politikaları gereği başlatamadığı için scripti doğrudan sonlandırıyor. Sorunun en can sıkıcı kısmı ise, bu işlemin herhangi bir hata mesajı göstermeden (silent failure) gerçekleşmesi.

Sorun Belirtileri: Scriptinizin Bozulduğunu Nasıl Anlarsınız?

  • Komut penceresi (CMD) açılıyor ama saniyeler içinde geri kapanıyor.

  • Log dosyaları oluşmuyor veya yarıda kalıyor.

  • Yönetici olarak çalıştırsanız bile script hiçbir işlem yapmıyor.

  • Özellikle eski paketleme araçlarıyla hazırlanan kurulum dosyaları hata veriyor.

Çözüm: PowerShell 2.0 Bağımlılığını Temizleme

Bu sorunu çözmek için script dosyalarınızdaki çağrı mekanizmasını modernize etmeniz gerekiyor. İşte adım adım izlemeniz gereken yol:

1. Dosyaları Tespit Edin

Eğer elinizde tek bir dosya varsa, sağ tıklayıp “Notepad” veya “VS Code” ile açın. İçerisinde -Version 2 veya -V 2 ifadesinin geçip geçmediğini kontrol edin.

2. Toplu Tarama Yapın (IT Yöneticileri İçin)

Eğer yüzlerce scriptin olduğu bir sunucuyu veya klasörü yönetiyorsanız, hangi dosyaların riskli olduğunu bulmak için aşağıdaki PowerShell komutunu kullanabilirsiniz:

PowerShell
# Belirtilen dizindeki tüm scriptleri tarar ve sorunlu parametreyi bulur
Get-ChildItem -Path "C:\Scriptlerin_Oldugu_Klasor" -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Extension -in '.ps1','.bat','.cmd','.vbs' } |
Select-String -Pattern 'powershell\.exe.*-version\s+2','-version\s+2'

3. Parametreyi Kaldırın

Bulduğunuz dosyalardaki -Version 2 kısmını silin. Modern Windows sürümleri zaten varsayılan olarak en güncel ve güvenli PowerShell sürümünü (5.1 veya Core) kullanacaktır.

Örnek Değişim:

  • Eski: powershell.exe -Version 2 -File "setup.ps1"

  • Yeni: powershell.exe -File "setup.ps1"

Dikkat Edilmesi Gereken Önemli Notlar

  1. Yedek Alın: Herhangi bir scripti düzenlemeden önce mutlaka orijinal kopyasını saklayın.

  2. Uyumluluk Kontrolü: Eğer scriptiniz gerçekten PowerShell 2.0’ın çok özel (ve artık eskimiş) bir sentaksına ihtiyaç duyuyorsa, parametreyi kaldırdıktan sonra script hata verebilir. Bu durumda scriptin kodlarını modern PowerShell yapısına göre güncellemeniz gerekecektir.

  3. Güvenlik Duvarı ve Politikalar: 24H2 sürümünde Execution Policy (Çalıştırma Politikası) ayarlarının da daha sıkı olduğunu unutmayın. Gerekirse Set-ExecutionPolicy Bypass komutunu gözden geçirin.

Windows 11 24H2 güncellemesi, sistemin modernleşmesi için atılmış büyük bir adım ancak eski altyapılar için küçük bir engel. Scriptlerinizdeki -Version 2 ibaresini kaldırarak bu sorunu saniyeler içinde çözebilir ve otomasyon süreçlerinizi kesintisiz sürdürebilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu