Wymyślasz koło na nowo. Normalne skrypty PowerShell mają parametry zaczynające się od -
, npscript.ps1 -server http://devserver
Następnie zajmujesz się nimi w param
sekcji na początku pliku.
Możesz także przypisać wartości domyślne do swoich parametrów, odczytać je z konsoli, jeśli nie są dostępne, lub zatrzymać wykonywanie skryptu:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Wewnątrz skryptu możesz po prostu
write-output $server
ponieważ wszystkie parametry stają się zmiennymi dostępnymi w zakresie skryptu.
W tym przykładzie $server
wartość domyślna jest -username
pobierana, jeśli skrypt jest wywoływany bez niego, skrypt zatrzymuje się, jeśli pominiesz parametr, i poprosi o wprowadzenie danych terminalowych, jeśli -password
zostanie pominięty.
Aktualizacja: Możesz także przekazać „flagę” (boolowski parametr prawda / fałsz) do skryptu PowerShell. Na przykład skrypt może zaakceptować „siłę”, w której skrypt działa w trybie bardziej ostrożnym, gdy siła nie jest używana.
Słowem kluczowym do tego jest [switch]
typ parametru:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Wewnątrz skryptu pracowałbyś z nim w ten sposób:
if ($force) {
//deletes a file or does something "bad"
}
Teraz, wywołując skrypt, ustawiłeś parametr switch / flag w następujący sposób:
.\yourscript.ps1 -server "http://otherserver" -force
Jeśli chcesz wyraźnie stwierdzić, że flaga nie jest ustawiona, istnieje specjalna specjalna składnia
.\yourscript.ps1 -server "http://otherserver" -force:$false
Odnośniki do odpowiedniej dokumentacji Microsoft (dla PowerShell 5.0; wersje 3.0 i 4.0 są również dostępne pod odnośnikami):
[string]$username = $(throw "-username is required.")
tam jest składnia dla obowiązkowych parametrów:[Parameter(Mandatory=$true)][string]$username
. Oto więcej informacji o różnicach między tymi technikami: blogs.technet.com/b/heyscriptingguy/archive/2011/05/22/…