Powershell Try and Catch
Powershell try catch and finally özelliği, hataları hande etmek için kullanılan bir block yapısıdır. Programlama deneyimi olanlar C# ve benzeri uygulamalardan try & catch yapısına hakim olduklarında Powershell üzerindeki try & catch kavramını kolayca anlayabilirler.
Fakat benim gibi programlama mantığı yerlerde olan IT Prolar için Powershell try and catch yapısını anlamak biraz zor olacaktır.
Ben her zaman yaptığım gibi en basit haliyle bu yapıyı size anlatmaya çalışacağım. Detay veya daha fazlasını öğrenmek isterseniz internet derya deniz. Amacım bir örnek üzerinden try catch yapısını anlamanızı sağlamak.
Makale İçeriği
POWERSHELL TRY AND CATCH
Powershell’de 2 tip error yapısı bulunmaktadır.
- Terminating Error
- Non-Terminating Error
Terminating Error scriptin aldığı önemli dediğimiz hatalardır. Bu hata alındığında powershell çalışmayı ve scripti durdurur.
Non-terminating Error ise operasyonal hataları gösteren errorlardır. Örneğin çalıştırdığınız bir scriptte yolunu gösterdiğiniz dosyanın bulunamaması veya scriptin ulaştığı dosyanın erişim iznine takılması gibi.
Powershell console’da bir hata aldıysanız $Error komutu ile alınan hata-hataları görebilirsiniz. $Error.count ile çalıştığınız betikte kaç hata olduğunu saydırabilirsiniz. Erroractionpreference ler ile hata alınması durumunda; Aşağıda görünen parametrelerle scripti durdurabilir (stop), herhangi bir hata döndürdüğünde sessizce devam ettirebilir (SlientlyContinue), devam ettirebilir (Continue), sorgulayabilir (Inqure), veya hatayı yok sayabilirsiniz (Ignore)
Aşağıda ErroractionPreference’da nasıl tepki verileceğini belirleyebileceğiniz ekranı paylaşıyorum.
Powershell Try and Catch Örneği:
Aşağıda try catch’i anlayabilmeniz ve referans olması açısından alıp üzerinde değişiklik yapabileceğiniz bir kod örneği (script) bırakıyorum. Scripti kısaca açıklayayım.
- ve 2. olmak üzere 2 sayı var ve bu sayıların toplam değerini hesaplıyorum (4)
Eğer bu sayıların toplam değeri 4 değilse hatayı yakalayarak bana “hesaplama sonucu doğru değil yazdıracak” hatayı
Eğer hesaplama sonucu doğru yani 4 ise gidip belirlediğim bir klasördeki dosyaları silmesini istedim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#Try and Catch Örneği $sayi1 = 2 $sayi2 = 2 $hesapla = $sayi1 + $sayi2 if(-not($hesapla -eq 4)) { try { Write-Host -ForegroundColor DarkRed "Hesaplama sonucu doğru değil" } catch { throw $_.Exception.Message } } else { Write-Host -ForegroundColor Green "Hesaplama sonucu doğru" } Pause |