PowerShell: Parantezleri, Parantezleri ve Köşeli Parantezleri Anlamak


Bu blog gönderisinin amacı, komut dosyaları hazırlayanlar ve PowerShell meraklıları için PowerShell desteklerinin kullanımını açığa çıkarmaktır. Parantezleri her yerde, komut dosyalarında, PowerShell yardımında ve basit tek satırlık satırlarda bulabilirsiniz. Ve üç türü var. Hadi dalalım.

() {} []

Üç tür braketi ayırt ediyoruz:

  • Parantez()
  • Parantez {}
  • Köşeli parantez []

Şüphesiz PowerShell'de en çok kullanılan parantez türleri Parantezlerdir. Bu yüzden önce parantezleri ele alacağız.

Parantez()

Daha önce de belirtildiği gibi(), PowerShell'de en çok görülen braket türüdür. Bunu neredeyse her yerde bulacaksınız; örneğin PowerShell sözdizimi hakkında daha fazla bilgi edinmek için harika bir kaynak olan PowerShell yardım örneklerinde.

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date?view=powershell-6

Açıklama bize komutun parantez içine alındığını ve böylece DayofYear özelliği devreye girdiğinde sonucun zaten orada olduğunu söylüyor…

Uzun lafın kısası şunu söyleyebiliriz:

Parantez içine alınmış nesneler (Komutlar, Değişkenler, …) anında yürütülür.

Daha iyi anlaşılması için bazı örnekler hazırladım.

Parantez - Örnek 1

Aşağıdaki tek satıra bir göz atın. Matematiksel hesaplamanın (çıkarma) yalnızca her iki ifadenin sonucu zaten mevcut olduğunda gerçekleştirilebileceğini unutmayın.


(Get-Date) - (Get-Date -Day 23 -Month 03 -Year 1976)

Parantez - Örnek 2

Get-Content tarafından parantez içine alınmış olarak alınan bilgisayar adlarının, Restart-Computer devreye girdiğinde zaten orada olması gerekir.

Parantez - Örnek 3

Betiğin bundan sonra ne yapacağına karar vermesi gerektiğinde, 1. satırdaki Test-Path'in sonucu zaten orada olmalıdır.

Bu da beni bir sonraki braket türüne getiriyor: Braketler.

Parantez {}

Parantezlerin aksine, parantez içindeki nesneler anında yürütülmez. Komut dosyası bloklarında yaygın olarak kullanılırlar. Aşağıda görebileceğiniz gibi, parantez içindeki komutlarla bazı matematik işlemleri yapmak iyi bir fikir değildir.

Parantezlerle sarılmış nesneler (Komutlar, Değişkenler, …) komut dosyası bloklarında yaygın olarak kullanılır. Sıra kendilerine geldiğinde idam edilirler.

Diş Telleri - Örnek 1

() ve {} arasındaki farkı görebilmek için önceki örneğimize tekrar dönelim.

1. satırdaki Test Yolu anında yürütülür. 5. satırdan 8. satıra kadar olan kod blokları koşul karşılandığında yürütülür; diğer taraftan, koşul karşılanmadığında çalıştırılmazlar.

Diş Telleri - Örnek 2

Bu örnekteki komut, AzMember01 uzak bilgisayarında zamanlanmış bir iş oluşturur. Braketlere dikkat edin.


Invoke-Command -ComputerName AzMember01 {Register-ScheduledJob -Name RestartAzMember01 -ScriptBlock {Restart-Computer -Force} -Trigger (New-JobTrigger -Once -At 05:15pm)}

Birkaç komut Parantez ile sarılmıştır. İfade anında yürütülmez çünkü ilk başta herhangi bir şey yapmanın bir anlamı yoktur. PowerShell motorunun, ne yapılması gerektiğine anlamlı bir şekilde karar verebilmesi için önce komutun tamamını incelemesi gerekir.

Bu da beni son kısma getiriyor.

Köşeli parantez []

Köşeli parantezler dizilerdeki veya hashtable'lardaki öğeleri alır ve isteğe bağlı parametreler olarak görev yapar.

Köşeli Parantez - Örnek 1

Mesela bir dizimiz olduğunu varsayalım.


$array=[array]('Peter','Margit','Patrick')

Dizi öğelerini almak için Köşeli Parantezleri kullanın.

Köşeli Parantez - Örnek 2

Yalnızca r veya s harfiyle başlayan hizmetleri almak için r ve s'yi Köşeli Parantez içine koymanız gerekir.


Get-Service [rs]* | Select-Object Name,Status

Son olarak, adları s veya r ile biten tüm hizmetleri sorgulayan ve görüntüleyen bir örnek.


Get-Service *[sr] | Select-Object Status,Name

Köşeli Parantez - Örnek 3

Hashtable bir diziye benzer ancak bir anahtar/değer çifti kullanır.


$hash=@{Kevin = '1'; Alex= '9'; Margit= '12'}

Şimdi Köşeli Parantezleri kullanarak “Kevin” anahtarına erişiyoruz ve 1 değerini alıyoruz.


$hash['Kevin']

Bu makalenin PowerShell'deki parantezlerle ilgili konunun daha iyi anlaşılmasına yardımcı olduğunu umuyorum. Her üç braket türü de kapsanmıştır. Ayrıca örneklerin yararlı olmasını ve bunları temel alarak geliştirebilmenizi umuyorum.

Bir dahaki sefere PowerShell'de görüşürüz!

İlgili makaleler