Bagikan melalui


Tentang_Sintaks_Sederhana

Deskripsi singkat

Menggambarkan cara skrip filter yang lebih mudah dan menggunakan bahasa alami untuk koleksi objek.

Deskripsi panjang

Sintaks yang disederhanakan, yang diperkenalkan di Windows PowerShell 3.0, memungkinkan Anda membuat beberapa perintah filter tanpa menggunakan blokir 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 yang sesuai where 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() }

Nota

Pada perintah kedua, metode GetKeyAlgorithm dipanggil pada setiap objek dalam koleksi. Jika objek yang diterima dari alur tidak memiliki metode GetKeyAlgorithm, 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 bersifat posisional, Anda dapat mengabaikannya 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 metode GetKeyAlgorithm 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 MemberName parameter dari ForEach-Object. Perintah menampilkan deskripsi setiap objek System.Diagnostics.Process yang dikembalikan oleh Get-Process.

Get-Process | foreach Description

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

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

Lihat juga