about_Simplified_Syntax

Deskripsi singkat

Menjelaskan cara filter skrip bahasa yang lebih mudah dan lebih alami untuk kumpulan objek.

Deskripsi panjang

Sintaks yang disederhanakan, yang diperkenalkan di Windows PowerShell 3.0, memungkinkan Anda membangun beberapa perintah filter tanpa menggunakan blok skrip. Sintaks yang disederhanakan lebih menyerupai bahasa alami, dan terutama berguna dengan kumpulan objek yang disalurkan ke dalam perintah Where-Object dan ForEach-Object atau alias where yang sesuai dan foreach.

Anda dapat menggunakan metode pada anggota koleksi (paling umum, array) tanpa merujuk ke variabel $_ otomatis di dalam blok skrip.

Pertimbangkan dua pemanggilan berikut:

Sintaks Standar

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

Catatan

Pada perintah kedua, metode dipanggil GetKeyAlgorithm pada setiap objek dalam koleksi. Jika objek yang diterima dari alur tidak memiliki GetKeyAlgorithm metode, perintah akan menghasilkan kesalahan.

Sintaks yang disederhanakan

Di bawah sintaks yang disederhanakan, operator perbandingan yang bekerja pada anggota objek dalam koleksi diimplementasikan sebagai parameter. Selain itu, Anda dapat memanggil metode pada objek dalam koleksi tanpa mengacu pada variabel $_ otomatis di dalam blok skrip. Bandingkan dua pemanggilan berikut dengan contoh sintaks standar:

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

Karena parameter Properti dan MemberName berposisi, Anda dapat menghilangkannya dari perintah . Dengan menggunakan alias, Anda dapat menyederhanakan perintah lebih lanjut:

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

Saat kedua sintaks berfungsi, sintaks yang disederhanakan mengembalikan hasil tanpa mengacu pada variabel $_ otomatis di dalam blok skrip. Sintaks yang disederhanakan membaca lebih seperti pernyataan bahasa alami dan dapat lebih mudah dipahami.

Nama GetKeyAlgorithm metode diteruskan sebagai argumen untuk parameter MemberName dari ForEach-Object. Saat Anda memanggil metode menggunakan sintaks yang disederhanakan, metode dipanggil untuk setiap objek dalam alur hanya jika objek tersebut memiliki metode tersebut. Oleh karena itu, Anda mendapatkan hasil yang sama, tetapi tanpa kesalahan.

Dalam contoh berikutnya, Description diteruskan ke parameter MemberName dari ForEach-Object. Perintah menampilkan deskripsi setiap objek System.Diagnostics.Process yang dikembalikan oleh Get-Process.

Get-Process | foreach Description

Dalam contoh ini, nama GetFiles metode diteruskan ke parameter MemberName dari ForEach-Object perintah . Nilai .* diteruskan ke parameter ArgumentList . Metode GetFiles() ini dipanggil dengan parameter .* pola pencarian untuk setiap objek System.IO.DirectoryInfo yang dikembalikan oleh Get-ChildItem.

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

Lihat juga