Sie erfinden das Rad neu. Normale PowerShell-Skripte haben Parameter, die mit -
, wie script.ps1 -server http://devserver
Dann behandeln Sie sie in einem param
Abschnitt (beachten Sie, dass dieser muss beginnt mit der ersten unkommentierten Zeile in Ihrem Skript).
Sie können Ihren Parametern auch Standardwerte zuweisen, sie von der Konsole lesen, wenn sie nicht verfügbar sind, oder die Skriptausführung anhalten:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Innerhalb des Skripts können Sie einfach
write-output $server
da alle Parameter zu Variablen werden, die im Skriptbereich verfügbar sind.
In diesem Beispiel ist die $server
erhält einen Standardwert, wenn das Skript ohne ihn aufgerufen wird, das Skript hält an, wenn Sie das -username
und fragt nach einer Terminaleingabe, wenn -password
weggelassen wird.
Aktualisieren: Sie können auch ein "Flag" (einen booleschen true/false-Parameter) an ein PowerShell-Skript übergeben. Ihr Skript kann beispielsweise ein "force" akzeptieren, wobei das Skript in einem vorsichtigeren Modus ausgeführt wird, wenn force nicht verwendet wird.
Das Schlüsselwort dafür lautet [switch]
Parameter-Typ:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Innerhalb des Skripts würden Sie dann wie folgt vorgehen:
if ($force) {
//deletes a file or does something "bad"
}
Wenn Sie nun das Skript aufrufen, setzen Sie den Parameter switch/flag wie folgt:
.\yourscript.ps1 -server "http://otherserver" -force
Wenn Sie ausdrücklich angeben wollen, dass das Kennzeichen nicht gesetzt ist, gibt es dafür eine spezielle Syntax
.\yourscript.ps1 -server "http://otherserver" -force:$false
Links zur relevanten Microsoft-Dokumentation (für PowerShell 5.0; die Versionen 3.0 und 4.0 sind ebenfalls über die Links verfügbar):