Basitleştirilmiş Söz Dizimi hakkında


Kısa açıklama

Nesne koleksiyonları için filtreleri komut dosyası olarak yazmanın daha kolay, daha doğal dildeki yollarını açıklar.

Uzun açıklama

Windows PowerShell 3.0'da sunulan basitleştirilmiş sözdizimi, komut dosyası bloklarını kullanmadan bazı filtre komutları oluşturmanıza olanak tanır. Basitleştirilmiş sözdizimi doğal dile daha çok benzer ve öncelikle Where-Object ve ForEach-Object komutlarına veya bunlara karşılık gelen takma adlara aktarılan nesne koleksiyonlarında kullanışlıdır. nerede ve foreach.

Bir yöntemi, bir koleksiyonun (en yaygın olarak bir dizi) üyeleri üzerinde, bir komut dosyası bloğu içindeki $_ otomatik değişkenine başvurmadan kullanabilirsiniz.

Aşağıdaki iki çağrıyı göz önünde bulundurun:

Standart Sözdizimi

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }

Not

İkinci komutta koleksiyondaki her nesne üzerinde GetKeyAlgorithm yöntemi çağrılır. İşlem hattından alınan nesnenin GetKeyAlgorithm yöntemi yoksa komut bir hata üretir.

Basitleştirilmiş sözdizimi

Basitleştirilmiş söz dizimi altında, bir koleksiyondaki nesnelerin üyeleri üzerinde çalışan karşılaştırma işleçleri parametre olarak uygulanır. Ayrıca, bir koleksiyondaki nesneler üzerinde, bir komut dosyası bloğu içindeki $_ otomatik değişkenine başvurmadan bir yöntemi çağırabilirsiniz. Aşağıdaki iki çağrıyı standart sözdizimi örnekleriyle karşılaştırın:

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -MemberName GetKeyAlgorithm

Özellik ve ÜyeAdı parametreleri konumsal olduğundan, bunları komuttan çıkarabilirsiniz. Takma adları kullanarak komutları daha da basitleştirebilirsiniz:

dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm

Her iki sözdizimi de çalışırken, basitleştirilmiş sözdizimi, bir komut dosyası bloğu içindeki $_ otomatik değişkenine başvurmadan sonuçları döndürür. Basitleştirilmiş sözdizimi daha çok doğal dildeki bir ifadeye benzer ve anlaşılması daha kolay olabilir.

GetKeyAlgorithm yöntem adı, ForEach-Object'in MemberName parametresi için bağımsız değişken olarak iletilir. Basitleştirilmiş sözdizimini kullanarak yöntemi çağırdığınızda, yöntem, ardışık düzendeki her nesne için yalnızca o nesnenin o yönteme sahip olması durumunda çağrılır. Bu nedenle aynı sonuçları hatasız olarak alırsınız.

Sonraki örnekte, ForEach-Object'in MemberName parametresine Açıklama aktarılır. Komut, Get-Process tarafından döndürülen her System.Diagnostics.Process nesnesinin açıklamasını görüntüler.

Get-Process | foreach Description

Bu örnekte, GetFiles yöntem adı, ForEach-Object komutunun MemberName parametresine aktarılır. .* değeri ArgumentList parametresine aktarılır. GetFiles() yöntemi, Get- tarafından döndürülen her System.IO.DirectoryInfo nesnesi için arama modeli parametresi .* ile çağrılır. ChildItem.

Get-ChildItem /home -Directory | foreach GetFiles .*

Ayrıca bakınız

  • about_Comparison_Operators
  • about_Foreach
  • Foreach-Object
  • Where-Object

İlgili makaleler