Sie erfinden das Rad neu. Normale Powershell - Skripts haben Parameter , beginnend mit -
, wiescript.ps1 -server http://devserver
Dann behandeln Sie sie im param
Abschnitt am Anfang der Datei.
Sie können Ihren Parametern auch Standardwerte zuweisen, diese von der Konsole lesen, falls sie nicht verfügbar sind, oder die Skriptausführung stoppen:
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 $server
erhält das einen Standardwert, wenn das Skript ohne dieses aufgerufen wird. Das Skript wird angehalten, wenn Sie den -username
Parameter weglassen , und fragt nach einer Terminaleingabe, wenn -password
es weggelassen wird.
Update: Möglicherweise möchten Sie auch ein "Flag" (einen booleschen true / false-Parameter) an ein PowerShell-Skript übergeben. Beispielsweise akzeptiert Ihr Skript möglicherweise eine "Kraft", bei der das Skript in einem vorsichtigeren Modus ausgeführt wird, wenn keine Kraft verwendet wird.
Das Schlüsselwort dafür ist [switch]
Parametertyp:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Innerhalb des Skripts würden Sie dann folgendermaßen damit arbeiten:
if ($force) {
//deletes a file or does something "bad"
}
Wenn Sie jetzt das Skript aufrufen, setzen Sie den Parameter switch / flag wie folgt:
.\yourscript.ps1 -server "http://otherserver" -force
Wenn Sie ausdrücklich angeben möchten, dass das Flag nicht gesetzt ist, gibt es dafür eine spezielle Syntax
.\yourscript.ps1 -server "http://otherserver" -force:$false
Links zu relevanten Microsoft-Dokumentationen (für PowerShell 5.0; die Versionen 3.0 und 4.0 sind auch unter den Links verfügbar):
[string]$username = $(throw "-username is required.")
gibt es stattdessen eine Syntax für obligatorische Parameter :[Parameter(Mandatory=$true)][string]$username
. Hier finden Sie weitere Informationen zum Unterschied zwischen diesen Techniken: blogs.technet.com/b/heyscriptingguy/archive/2011/05/22/…