Abrufen von Befehlszeilenargumenten in Windows PowerShell

Marion Paul Kenneth Mendoza 21 Dezember 2022
  1. Definieren Sie Parameter im PowerShell-Skript
  2. Benannte Parameter in PowerShell-Skript
  3. Zuweisen von Standardwerten zu Parametern in PowerShell-Skripten
  4. Parameter in PowerShell-Skript umschalten
  5. Obligatorische Parameter in PowerShell-Skript
Abrufen von Befehlszeilenargumenten in Windows PowerShell

Wir behandeln Argumente mit der Windows PowerShell-Parameterfunktion namens param(). Die Windows PowerShell-Parameterfunktion ist eine grundlegende Komponente jedes Skripts. Ein Parameter gibt an, wie Entwickler es Skriptbenutzern ermöglichen, zur Laufzeit Eingaben zu machen.

In diesem Artikel erfahren Sie, wie Sie Skripts mit der Parameterfunktion erstellen, sie verwenden und einige Best Practices zum Erstellen von Parametern kennenlernen.

Definieren Sie Parameter im PowerShell-Skript

Administratoren können mit der Parameterfunktion param() Parameter für Skripte und Funktionen erstellen. Eine Funktion enthält einen oder mehrere durch Variablen definierte Parameter.

Hallo_Welt.ps1:

param(
     $message
)

Um jedoch sicherzustellen, dass der Parameter nur die Art der Eingabe akzeptiert, die Sie benötigen, schreiben Best Practices vor, dem Parameter einen Datentyp mit der Verwendung eines Parameterblocks [Parameter()] zuzuweisen und den Datentyp in eckige Klammern einzuschließen [] vor der Variablen.

Hallo_Welt.ps1:

param(
    [Parameter()]
    [String]$message
)

Im obigen Beispiel Hello_World.ps1 akzeptiert die Variable message nur dann einen übergebenen Wert, wenn der angegebene Wert vom Datentyp String ist.

Benannte Parameter in PowerShell-Skript

Eine Möglichkeit, die Parameterfunktion in einem Skript zu verwenden, ist über den Parameternamen – diese Methode wird benannte Parameter genannt. Beim Aufruf eines Skripts oder einer Funktion über benannte Parameter verwenden wir den Variablennamen als vollständigen Namen des Parameters.

In diesem Beispiel haben wir eine Hello_World.ps1 erstellt und Variablen innerhalb der Parameterfunktion definiert. Denken Sie daran, dass wir eine oder mehrere Variablen in die Parameterfunktion einfügen können.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion
)

Write-Output $message
Write-Output "I am $emotion"

Wir können dann die genannten Parameter als Argument verwenden, wenn wir eine .ps1-Datei ausführen.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy'

Ausgabe:

Hello World!
I am happy

Zuweisen von Standardwerten zu Parametern in PowerShell-Skripten

Wir können einem Parameter vorab einen Wert zuweisen, indem wir dem Parameter innerhalb des Skripts einen Wert zuweisen. Wenn Sie dann das Skript ausführen, ohne Werte aus der Ausführungszeile zu übergeben, wird der Standardwert der im Skript definierten Variablen übernommen.

param(
    [Parameter()]
    [String]$message = "Hello World",
    [String]$emotion = "happy"
)

Write-Output $message
Write-Output "I am $emotion"
.\Hello_World.ps1

Ausgabe:

Hello World!
I am happy

Parameter in PowerShell-Skript umschalten

Ein weiterer Parameter, den wir verwenden können, ist der switch-Parameter, der durch den Datentyp [switch] definiert ist. Der Switch-Parameter wird für binäre oder boolesche Werte verwendet, um true oder false anzuzeigen.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

Wir können unser Skript mit dem Skriptparameter unter Verwendung der folgenden Syntax aufrufen.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy' -display:$false

Ausgabe:

User denied confirmation.

Obligatorische Parameter in PowerShell-Skript

Es ist üblich, einen oder mehrere Parameter zu haben, die verwendet werden müssen, wenn ein Skript ausgeführt wird. Wir können einen Parameter obligatorisch machen, indem wir ein Mandatory-Attribut innerhalb des Parameterblocks [Parameter()] hinzufügen.

Hallo_Welt.ps1:

param(
    [Parameter(Mandatory)]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if($display){
    Write-Output $message
    Write-Output "I am $emotion"
}else{
    Write-Output "User denied confirmation."
}

Beim Ausführen von Hello_World.ps1 lässt Windows PowerShell die Ausführung des Skripts nicht zu und fordert Sie zur Eingabe eines Werts auf.

.\Hello_World.ps1

Ausgabe:

cmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message:
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn