Burada yoldan sapmışsın.
Zaten güzel, büyük bir hata mesajınız var. Neden her bir komuttan$?
sonra açıkça kontrol eden bir kod yazmak istersiniz ? Bu son derece zahmetli ve hataya açık. Doğru çözüm, kontrolü durdurmaktır .$?
Bunun yerine, sizin için havaya uçmak için PowerShell'in yerleşik mekanizmasını kullanın. Hata tercihini en yüksek seviyeye ayarlayarak etkinleştirirsiniz :
$ErrorActionPreference = 'Stop'
Bunu yazdığım her senaryonun en üstüne koyuyorum ve şimdi kontrol etmem gerekmiyor $?
. Bu, kodumu çok daha basit ve daha güvenilir hale getiriyor.
Bu davranışı gerçekten devre dışı bırakmanız gereken durumlarla karşılaşırsanız catch
, hata yapabilir veya ortak olanı kullanarak belirli bir işleve bir ayar iletebilirsiniz -ErrorAction
. Sizin durumunuzda, muhtemelen işleminizin ilk hatada durmasını, hatayı yakalamasını ve ardından günlüğe kaydetmesini istiyorsunuz.
Bunun, harici yürütülebilir dosyalar başarısız olduğunda (geleneksel olarak sıfırdan farklı çıkış kodu) durumu ele almadığını unutmayın; bu nedenle, $LASTEXITCODE
herhangi birini çağırıp çalıştırmadığınızı yine de kontrol etmeniz gerekir . Bu sınırlamaya rağmen, ayar hala çok fazla kod ve çaba tasarrufu sağlıyor.
Ek güvenilirlik
Ayrıca katı modu kullanmayı da düşünebilirsiniz :
Set-StrictMode -Version Latest
Bu, var olmayan bir değişken kullandığınızda ve diğer garip durumlarda PowerShell'in sessizce ilerlemesini engeller. ( -Version
Neyi kısıtladığı hakkında ayrıntılar için parametreye bakın .)
Bu iki ayarı birleştirmek, PowerShell'i çok daha hızlı bir dil haline getirir ve bu da içindeki programlamayı büyük ölçüde kolaylaştırır.