28 April 2009

Bahasa Scripting Windows PowerShell (Bagian 5)

Filter Obyek dari Pipeline
Windows PowerShell memungkinkan obyek yang dikirim melalui pipe di filter dan hanya obyek dengan kriteria tertentu saja yang ditampilkan. Dengan menggunakan cmdlet Where-Object, tiap obyek yang dikirim melalui pipe akan dites dan hanya yang memenuhi kondisi yang diinginkan saja yang akan ditampilkan. Kondisi yang diinginkan diberikan pada parameter FilterScript.
Isi dari parameter FilterScript merupakan blok skrip yang berisikan satu atau lebih perintah Windows PowerShell yang diawali dan diakiri oleh tanda kurung kurawal {}, yang nantinya akan dievaluasi menjadi kondisi True atau False. Blok skrip tersebut mengandung operator pembanding. Operator-operator pembanding dasar yang ada adalah sebagai berikut.

  • -eq. Sama dengan.
  • -ne. Tidak sama dengan.
  • -lt. Lebih kecil dari.
  • -le. Lebih kecil dari atau sama dengan.
  • -gt. Lebih besar dari.
  • -ge. Lebih besar dari atau sama dengan.
  • -like. Seperti (bisa menggunakan wildcard sebagai pembanding).
  • -notlike. Tidak seperti (bisa menggunakan wildcard sebagai pembanding).
  • -contains. Berisi.
  • -not contains. Tidak berisi.
Variabel spesial “$_” digunakan sebagai referensi terhadap obyek yang dikirim melalui pipeline. Contoh dibawah ini akan memfilter angka dari 1 sampai 4 dengan kondisi lebih kecil dari 3. Hasil yang ditampilkan adalah 1 dan 2.
1, 2, 3, 4 | Where-Object -FilterScript {$_ -lt 3}
Karena $_ merupakan referensi dari obyek, maka kita dapat mengakses property untuk tes kondisi. Misalnya jika kita mengetikkan perintah Get-Command, maka akan tampil banyak elemen dari Windows PowerShell. Namun kita hanya tertarik pada elemen yang memiliki property Name diakhiri kata “Item”. Masalah tersebut dapat diatasi dengan mengetikkan perintah berikut.
Get-Command | Where-Object -FilterScript {$_.Name -like “*item”}
Hasil output dari Where-Object dapat pula diteruskan melalui pipe ke Where-Object lain, yang artinya memfilter dua kali. Tidak terbatas dua, cara filter seperti ini bisa digunakan lebih dari satu. Misalnya hasil dari output filter diatas di filter lagi menjadi hanya yang mempunyai huruf “C” sebagai awal namanya.
Get-Command | Where-Object -FilterScript {$_.Name -like “*item”} | Where-Object -FilterScript {$_.Name -like “c*”}
Dua elemen Where-Object diatas dapat pula dijadikan satu menjadi satu elemen Where-Object dengan menggunakan operator logika.
Get-Command | Where-Object -FilterScript {($_.Name -like “*item”) -and ($_.Name -like “c*”)}
Operator logika standar yang ada adalah sebagai berikut.
  • -and.
  • -or.
  • -not.
  • !. (sama dengan -not).

Menggunakan Variabel
Variabel digunakan untuk menyimpan hasil dari suatu proses. Pada Windows PowerShell, variabel diawali dengan tanda $ dan namanya dapat mengandung karakter alphanumeric dan garis bawah (_). Untuk menciptakan sebuah variabel, kita bisa langsung mengetikkan variabel tersebut, contoh:
$var1
Tidak ada yang dihasilkan dari perintah tersebut karena variabel tersebut tidak memiliki nilai. Kita bisa juga langsung mengisikan nilai pada saat pembuatan variabel.
$var1 = 1000
Jika kita mengetikkan nama variabel yang sudah ada nilainya, maka nilainya akan ditampilkan di layar. Bahkan sebuah obyek dapat disimpan dalam sebuah variabel. Misalkan:
$var1 = Get-ChildItem
Jika kita ketikkan $var1, maka akan tampil isi dari direktori yang bersangkutan. Sebagai bukti lebih lanjut, kita bisa melakukan filter terhadap variabel tersebut.
$var1 | Where-Object -FilterScript {$_ -like “a*”}
Kita dapat melihat apa saja variabel yang ada dengan menggunakan cmdlet Get-Variable. Semua variabel pada Windows PowerShell termasuk variabel yang kita buat akan ditampilkan.
Get-Variable
Hal yang sama kita dapatkan jika kita mengetikkan perintah berikut ini.
Get-ChildItem variable:
Untuk menghapus variabel, kita menggunakan cmdlet Remove-Variable dengan parameter Name diisi dengan nama variabel tanpa menggunakan tanda $.
Remove-Variable -Name var1
Atau bisa menghapus semua variabel dengan cara berikut.
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue

Tidak ada komentar:

Posting Komentar