Die PowerShell und die darin enthaltenen PowerShell Parameter sind ein leistungsfähiges Werkzeug für das Skripting in Windows-Umgebungen. Einer der Gründe für ihre Flexibilität und Stärke liegt in ihrem Parametermanagement. Durch das korrekte Verwenden von Parametern können Skripte und Funktionen maßgeschneidert und sicherer gestaltet werden und somit die Automatisierung von Verwaltungsaufgaben erleichtert. In dieser PowerShell Anleitung beleuchten wir die verschiedenen Aspekte von PowerShell-Parametern, wie das Definieren und Verwenden von Funktionsparametern, die Verwendung von benannten und Positionsparametern, Parameterwechseln, Splatting, Parameterattribute, obligatorische Parameter und Parametervalidierung.

Was sind Windows PowerShell-Funktionsparameter?

Parameter sind Eintrittspunkte in Funktionen und Skripte. Sie ermöglichen es dem Benutzer, Eingaben zu übergeben, die das Verhalten des Skripts oder der Funktion steuern. Funktionen in PowerShell werden definiert, indem man das „function-“ Schlüsselwort gefolgt von einem Namen verwendet und in geschweiften Klammern den Codeblock definiert. PowerShell Parameter werden in einem Param-Block innerhalb der Funktion definiert, welcher sich direkt nach der Funktionsdeklaration befindet.

Parameter definieren

Die Definition von Parametern erfolgt im param-Block einer Funktion. Hier ein einfaches Beispiel:

function Get-MultipliedNumber {
    param (
        [int]$Number,
        [int]$Multiplier
    )
    return $Number * $Multiplier
}

Im obigen Beispiel nimmt die Funktion Get-MultipliedNumber zwei Integer-Parameter: $Number und $Multiplier. Diese werden dann innerhalb der Funktion multipliziert.

Benannte Parameter

Benannte Parameter werden im PowerShell-Skript explizit beim Namen genannt. Das heißt, beim Aufruf einer Funktion gibt man den Namen des Parameters gefolgt von seinem Wert an. Das sieht dann so aus:

Get-MultipliedNumber -Number 10 -Multiplier 5

Positionsparameter

Man kann Parameter auch so definieren, dass ihre Position im Funktionsaufruf ihren Wert bestimmt. Wenn man den Parameter im param-Block definiert, kann man eine Position zuweisen:

function Get-MultipliedNumber {
    param (
        [Parameter(Position=0)][int]$Number,
        [Parameter(Position=1)][int]$Multiplier
    )
    return $Number * $Multiplier
}

Mit dieser Definition können Sie die Funktion aufrufen, ohne die Parameternamen anzugeben, nur basierend auf der Position:

Get-MultipliedNumber 10 5

Parameter wechseln

Schalterparameter sind eine Art von Parameter, der als eine Art Flag funktioniert, das ein bestimmtes Verhalten steuert, typischerweise ein boolesches Ein/Aus. Hier ist ein Beispiel:

function Show-Greeting {
    param (
        [switch]$English
    )
    if ($English) {
        "Hello!"
    } else {
        "Hallo!"
    }
}

Beim Aufrufen von Show-Greeting -English, wird „Hello!“ ausgegeben, ansonsten „Hallo!„.

Splatting

Splatting ist eine Methode in PowerShell, um Parameter zu übergeben, indem man sie in einem Hashtable oder Array speichert und dieses dann mit dem @-Symbol an die Funktion übermittelt. Diese Technik vereinfacht den Code, wenn eine Funktion viele Parameter benötigt.

$params = @{
    Number = 10
    Multiplier = 5
}
Get-MultipliedNumber @params

Parameterattribute

Parameterattribute in PowerShell verbessern die Funktionsweise von Parametern durch zusätzliche Informationen wie Datentypen oder ob ein Parameter obligatorisch ist. Einige gängige Attribute sind [Parameter()], [ValidateSet()], [int], [string] usw.

Obligatorische Parameter

Obligatorische Parameter sind solche, die beim Aufrufen einer Funktion zwingend benötigt werden. Ein Beispiel:

function Get-MultipliedNumber {
    param (
        [Parameter(Mandatory=$true)][int]$Number,
        [Parameter(Mandatory=$true)][int]$Multiplier
    )
    return $Number * $Multiplier
}

Parametervalidierung

Parametervalidierung ist ein wichtiges Feature, um sicherzustellen, dass die Eingaben, die eine Funktion erhält, gültig sind. Man kann mehrere Validierungsattribute verwenden:

function Get-MultipliedNumber {
    param (
        [Parameter(Mandatory=$true)][ValidateRange(1,100)][int]$Number,
        [Parameter(Mandatory=$true)][ValidateSet(1,2,5,10)][int]$Multiplier
    )
    return $Number * $Multiplier
}

Hier muss $Number zwischen 1 und 100 liegen, und $Multiplier muss einer der definierten Werte sein.

Zusammenfassung

PowerShell-Parameter sind essenziell, um die Funktionalität und Anpassbarkeit von Skripten und Funktionen zu verbessern. Durch das Verstehen und die korrekte Anwendung dieser Konzepte können Administratoren und Skriptentwickler mächtige und zuverlässige Tools erstellen. Von der einfachen Übergabe von Argumenten bis zur komplexen Validierung von Eingaben bietet PowerShell eine robuste Palette von Funktionen für die Arbeit mit Parametern. Auch Microsoft stellt auf Ihrer Webseite umfangreiche Informationen zu den PowerShell Parametern zur Verfügung.

– Powershell String Concat – Verknüpfen von Strings
– PowerShell Substring
– PowerShell Echo