Übergeben von Parametern an ein Windows PowerShell-Skript
Sie können Ihre Skripts so konfigurieren, dass sie Parameter auf dieselbe Weise wie Cmdlets akzeptieren. Dies ist eine gute Methode für die Eingabe durch Benutzer, da sie mit der Art und Weise übereinstimmt, wie Benutzer Eingaben für Cmdlets bereitstellen. Die Konsistenz erleichtert Benutzern das Verständnis.
Um die Variablen zu identifizieren, die Parameterwerte speichern, verwenden Sie einen Param() -Block. Die Variablennamen werden zwischen den Klammern definiert. Die Syntax für die Verwendung eines Param()- Blocks lautet:
Param(
[string]$ComputerName ,
[int]$EventID
)
Die im Param() -Block definierten Variablennamen sind auch die Namen der Parameter. Im vorherigen Beispiel weist das Skript mit diesem Param() -Block die Parameter "-ComputerName " und "-EventID " auf, die verwendet werden können. Wenn Sie die Parameternamen für das Skript eingeben, können Sie die Vervollständigung mit der TAB-TASTE genauso wie für Cmdlet-Parameter verwenden. Die Syntax zum Ausführen eines Skripts mit Parametern lautet:
.\GetEvent.ps1 -ComputerName LON-DC1 -EventID 5772
Hinweis
Die Parameter sind standardmäßig Positionsparameter. Wenn die Parameternamen nicht angegeben werden, werden die Parameterwerte der Reihe nach an die Parameter übergeben. Zum Beispiel wird der erste Wert nach dem Skriptnamen in die erste Parametervariable gesetzt.
Hinweis
Wenn Sie keinen Param() -Block in Ihr Skript einfügen, können Sie weiterhin Daten mithilfe von unbenannten Parametern an das Skript übergeben. Die Werte, die nach dem Skriptnamen angegeben werden, sind innerhalb des Skripts im $args-Array verfügbar.
Definieren von Variablentypen
Es empfiehlt sich, Variablentypen in einem Param() -Block zu definieren. Wenn Sie die Variablentypen definieren und ein Benutzer einen Wert eingibt, der nicht in diesen Variablentyp konvertiert werden kann, wird ein Fehler erzeugt. Dies ist eine Methode, um die Gültigkeit der von den Benutzern eingegebenen Daten zu überprüfen.
Sie können den switch-Variablentyp für einen Parameter verwenden, wenn eine Option ein- oder ausgeschaltet werden soll. Wenn das Skript ausgeführt wird, setzt das Vorhandensein des Parameters die Variable auf $true. Wenn der Parameter nicht vorhanden ist, lautet der Wert für eine Variable $false. In einem Skript, das benutzern in der Regel einige Statusinformationen anzeigt, könnten Sie beispielsweise einen Parameter "-quiet " erstellen, der die gesamte Ausgabe auf dem Bildschirm unterdrückt.
Eine switch-Variable wird im Allgemeinen einer booleschen Variable für Parameter vorgezogen, da die Syntax für Benutzer einfacher ist. Die Benutzer müssen keinen $true- oder $false-Wert hinzufügen.
Standardwerte
Sie können Standardwerte für Parameter im Param() -Block definieren. Die von Ihnen definierten Standardwerte werden nur verwendet, wenn der Benutzer keinen Wert für den Parameter bereitstellt. Dadurch wird sichergestellt, dass jeder erforderliche Parameter über einen Wert verfügt.
Das folgende Beispiel zeigt, wie Sie einen Standardwert festlegen:
Param(
[string]$ComputerName = "LON-DC1"
)
Anfordern einer Benutzereingabe
Sie können den Benutzer auch zur Eingabe auffordern, wenn er keinen Parameterwert angibt. Dadurch wird sichergestellt, dass der Benutzer einen Wert für einen Parameter angibt, wenn es keinen logischen Standardwert gibt, den Sie festlegen können.
Das folgende Beispiel zeigt, wie Benutzer zur Eingabe aufgefordert werden:
Param(
[int]$EventID = Read-Host "Enter event ID"
)
Hinweis
Sie können zusätzliche erweiterte Optionen für Parameter in einem Skript konfigurieren, z. B. einen obligatorischen Parameter erstellen, indem Sie das Parameter() -Attribut im Param()- Block verwenden.
Weiteres Lesen: Weitere Informationen zum Parameter() -Attribut finden Sie unter about_Functions_Advanced_Parameters.