Membuat Script Untuk Windows PowerShell


Pada Windows Command Prompt, batch file yang berakhiran .bat adalah script yang berisi kumpulan baris perintah DOS yang akan dikerjakan sebagai satu kesatuan. Windows PowerShell juga memiliki hal serupa dalam bentuk file berakhiran .ps1. Selain itu, Windows juga sudah dilengkapi dengan Windows PowerShell Integrated Scripting Environment (ISE) yang merupakan sebuah GUI untuk menulis script PowerShell. Berikut ini adalah contoh tampilan PowerShell ISE:

Tampilan PowerShell ISE

Tampilan PowerShell ISE

Walaupun sebuah script dapat dijalankan di PowerShell ISE, belum tentu ia dapat dijalankan langsung di PowerShell. Hal ini karena secara default, Windows tidak membolehkan eksekusi script PowerShell, seperti yang terlihat pada contoh berikut ini:

PS C:\> .\latihan.ps1
.\latihan.ps1 : File C:\latihan.ps1 cannot be loaded because running scripts is disabled on this sy
stem. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\latihan.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Untuk membolehkan eksekusi script PowerShell secara global, saya perlu menjalankan PowerShell sebagai Administrator dan memberikan perintah seperti:

PS C:\> Set-ExecutionPolicy Unrestricted

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

Windows menyediakan beberapa execution policy seperti Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, dan Defined. Yang disarankan adalah AllSigned dimana yang boleh dijalankan hanya script PowerShell yang telah di-beri informasi sertifikat digital (dibagian akhir file, dalam bentuk komentar). Bypass adalah execution policy yang paling leluasa.

Selain mengubah execution policy secara global melalui Set-ExecutionPolicy, saya juga dapat menjalankan script dengan memanggil PowerShell dari Command Prompt seperti berikut ini:

C:\> PowerShell -ExecutionPolicy Unrestricted ./latihan.ps1

Seperti apa bentuk script di PowerShell?

Script pada PowerShell mendukung variabel yang selalu diawali dengan tanda dollar seperti $nama dan $proses, seperti yang terlihat pada contoh berikut ini:

$nama = "solid snake"
Write-Host -ForegroundColor Yellow $nama

Sebuah variabel dapat menampung lebih dari satu nilai yang dipisahkan dengan tanda koma. Untuk melakukan looping pada nilai tersebut (array), saya dapat menggunakan foreach seperti pada:

$nama = "solid snake"
$daftarWarna = "Yellow", "Green", "Gray", "Black", "Blue"
foreach($warna in $daftarWarna) {
    Write-Host -ForegroundColor $warna $nama
}

Script di PowerShell bisa menggunakan while, do...while, do...until, for, if, dan switch seperti pada contoh berikut ini:

[int] $i = 1

while ($i -lt 10) {
    "Nilai `$i adalah $i"
    $i++
}

# hasilnya sama dengan:

$i = 1
do {
    "Nilai `$i adalah $i"
    $i++
} until ($i -ge 10)

# hasilnya sama dengan:

foreach($i in 1..9) {
    "Nilai `$i adalah $i"
}

# hasilnya sama seperti:

for($i=1; $i -le 9; $i++) {
    "Nilai `$i adalah $i"
}

Pada ekspresi boolean di script PowerShell, saya melakukan perbandingan dengan operator seperti -eq (sama dengan), -gt (lebih dari), -ge (lebih dari sama dengan), -like, -match dan sebagainya.

Selain itu, PowerShell juga mendukung module, function dan filter. Perbedaan antara function dan filter akan terlihat pada saat melakukan piping. Pada saat melakukan piping ke function, perintah di bagian kiri akan diselesaikan terlebih dahulu baru kemudian function di sebelah kanan dikerjakan. Beda dengan function, filter tidak menunggu hingga perintah di bagian kiri selesai, melainkan dikerjakan untuk setiap iterasi. Sebagai contoh, berikut ini adalah contoh penggunaan filter dalam script untuk menghapus cache Griffon yang sudah tidak ada proyeknya lagi:

Contoh Filter Di PowerShell

Contoh Filter Di PowerShell

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: