Tekerleği yeniden icat ediyorsunuz. Normal PowerShell komut parametreleri ile başlayan var -
gibiscript.ps1 -server http://devserver
Sonra onları param
dosyanın başlangıcında ele alırsınız .
Ayrıca parametrelere varsayılan değerler atayabilir, yoksa konsoldan okuyabilir veya kod yürütmeyi durdurabilirsiniz:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Senaryo içinde basitçe
write-output $server
çünkü tüm parametreler kod kapsamında mevcut değişkenler haline gelir.
Bu örnekte, $server
komut dosyası onsuz çağrılırsa varsayılan bir değer alır, -username
parametreyi atlarsanız komut dosyası durur ve -password
atlanırsa terminal girişi ister .
Güncelleme: PowerShell betiğine "bayrak" (boolean true / false parametresi) iletmek de isteyebilirsiniz. Örneğin, komut dosyanız, zorlama kullanılmadığında komut dosyasının daha dikkatli bir modda çalıştığı bir "zorlamayı" kabul edebilir.
Bunun için anahtar kelime [switch]
parametre türüdür:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Senaryo içinde sonra onunla böyle çalışacak:
if ($force) {
//deletes a file or does something "bad"
}
Şimdi, komut dosyasını çağırırken switch / flag parametresini şu şekilde ayarlayabilirsiniz:
.\yourscript.ps1 -server "http://otherserver" -force
Bayrağın ayarlanmadığını açıkça belirtmek isterseniz, bunun için özel bir sözdizimi vardır.
.\yourscript.ps1 -server "http://otherserver" -force:$false
İlgili Microsoft belgelerine bağlantılar (PowerShell 5.0 için; sürüm 3.0 ve 4.0 da bağlantılarda mevcuttur):