Aracılığıyla paylaş


Basitleştirilmiş Sözdizimi Hakkında

Kısa açıklama

Nesne koleksiyonları için betik filtreleri oluşturmanın daha kolay, daha doğal dildeki yollarını açıklar.

Uzun açıklama

Windows PowerShell 3.0'da kullanıma sunulan basitleştirilmiş söz dizimi, betik engellemeleri kullanmadan bazı filtre komutları oluşturmanıza olanak tanır. Basitleştirilmiş söz dizimi, doğal dile daha yakın bir benzerlik gösterir ve öncelikli olarak Where-Object ve ForEach-Object komutlarına veya onların karşılık gelen diğer adları olan where ve foreach'e aktarılan nesne koleksiyonları ile birlikte kullanıldığında yararlıdır.

Bir betik bloğunun içindeki otomatik değişkene $_ başvurmadan bir koleksiyonun üyelerinde (en yaygın olarak bir dizi) bir yöntem kullanabilirsiniz.

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

Standart Söz Dizimi

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

Not

İkinci komutta GetKeyAlgorithm yöntemi koleksiyondaki her nesnede çağrılır. İşlem hattından alınan nesnenin bir GetKeyAlgorithm yöntemi yoksa, komut bir hata oluşturur.

Basitleştirilmiş söz dizimi

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 betik bloğu içindeki otomatik değişkene $_ başvurmadan bir koleksiyondaki nesneler üzerinde bir yöntem çağırabilirsiniz. Aşağıdaki iki çağrıyı standart söz dizimi ö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

Özelliği ve MemberName parametreleri konumsal olduğundan, bunları komutundan atlayabilirsiniz. Diğer adları kullanarak komutları daha da basitleştirebilirsiniz:

dir Cert:\LocalMachine\Root | where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm

Her iki söz dizimi de işe yarasa da, basitleştirilmiş söz dizimi, bir betik bloğunun içindeki otomatik değişkene $_ başvurmadan sonuçları döndürür. Basitleştirilmiş söz dizimi daha çok doğal dil deyimine benzer ve anlaşılması daha kolay olabilir.

yöntem adı GetKeyAlgorithm, ForEach-Object parametresi için bağımsız değişken olarak geçirilir. Basitleştirilmiş söz dizimini kullanarak yöntemini çağırdığınızda, yöntem yalnızca söz konusu nesnenin bu yöntemine sahip olması durumunda işlem hattındaki her nesne için çağrılır. Bu nedenle, aynı sonuçları alırsınız ancak hatasız olursunuz.

Sonraki örnekte, Description'ün ForEach-Object parametresine geçirilir. komutu, tarafından döndürülen her Get-Process nesnesinin açıklamasını görüntüler.

Get-Process | foreach Description

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

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

Ayrıca bakınız