Anda sedang menciptakan kembali roda. Skrip PowerShell yang normal memiliki parameter yang dimulai dengan -
, sepertiscript.ps1 -server http://devserver
Kemudian Anda menangani mereka di param
bagian di awal file.
Anda juga dapat menetapkan nilai default ke params Anda, membacanya dari konsol jika tidak tersedia atau menghentikan eksekusi skrip:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Di dalam skrip Anda dapat dengan mudah
write-output $server
karena semua parameter menjadi variabel yang tersedia dalam cakupan skrip.
Dalam contoh ini, $server
mendapat nilai default jika skrip dipanggil tanpa itu, skrip berhenti jika Anda menghilangkan -username
parameter dan meminta input terminal jika -password
dihilangkan.
Pembaruan: Anda mungkin juga ingin memberikan "flag" (parameter boolean true / false) ke skrip PowerShell. Misalnya, skrip Anda dapat menerima "kekuatan" di mana skrip berjalan dalam mode yang lebih hati-hati saat paksaan tidak digunakan.
Kata kunci untuk itu adalah [switch]
tipe parameter:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Di dalam skrip maka Anda akan bekerja dengannya seperti ini:
if ($force) {
//deletes a file or does something "bad"
}
Sekarang, saat memanggil skrip Anda akan mengatur parameter sakelar / panji seperti ini:
.\yourscript.ps1 -server "http://otherserver" -force
Jika Anda secara eksplisit ingin menyatakan bahwa flag tidak disetel, ada sintaks khusus untuk itu
.\yourscript.ps1 -server "http://otherserver" -force:$false
Tautan ke dokumentasi Microsoft yang relevan (untuk PowerShell 5.0; versi 3.0 dan 4.0 juga tersedia di tautan):
[string]$username = $(throw "-username is required.")
ada sintaks untuk parameter wajib:[Parameter(Mandatory=$true)][string]$username
. Berikut adalah info lebih lanjut tentang perbedaan antara teknik-teknik ini: blogs.technet.com/b/heyscriptingguy/archive/2011/05/22/…