about_Functions_Advanced
Kurze Beschreibung
Führt erweiterte Funktionen ein, die eine Möglichkeit zum Erstellen von Cmdlets mithilfe von Skripts sind.
Lange Beschreibung
Ein Cmdlet ist ein einzelner Befehl, der an der Pipelinesemantik von PowerShell teilnimmt. Dazu gehören binäre Cmdlets, erweiterte PowerShell-Funktionen und CDXML-Cmdlets.
Mit erweiterten Funktionen können Sie Cmdlets erstellen, die als PowerShell-Funktion geschrieben werden. Erweiterte Funktionen erleichtern das Erstellen von Cmdlets, ohne ein binäres Cmdlet schreiben und kompilieren zu müssen. Binäre Cmdlets sind .NET-Klassen, die in einer .NET-Sprache wie C# geschrieben werden.
Erweiterte Funktionen verwenden das CmdletBinding
Attribut, um sie als Funktionen zu identifizieren, die wie Cmdlets funktionieren. Das CmdletBinding
Attribut ähnelt dem Cmdlet-Attribut, das in kompilierten Cmdlet-Klassen verwendet wird, um die Klasse als Cmdlet zu identifizieren. Weitere Informationen zu diesem Attribut finden Sie unter about_Functions_CmdletBindingAttribute.
Die Parameter der Funktion sind Variablen, die in der param()
-Anweisung deklariert werden. Sie können das optionale [Parameter()]
-Attribut allein oder in Kombination mit dem attribut [Alias()]
oder einem der Parameterüberprüfungsattribute verwenden. Weitere Informationen zum Deklarieren von Parametern finden Sie unter about_Functions_Advanced_Parameters.
Das folgende Beispiel zeigt eine Funktion, die einen Namen akzeptiert und dann eine Begrüßung mit dem angegebenen Namen druckt. Beachten Sie außerdem, dass diese Funktion einen Namen definiert, der ein Verbpaar (Senden) und Substantiv (Gruß) wie das Verb-Nomenpaar eines kompilierten Cmdlets enthält. Funktionen sind jedoch nicht erforderlich, um einen Verbennamen zu haben.
function Send-Greeting
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$Name
)
process
{
Write-Host ("Hello " + $Name + "!")
}
}
Diese Funktion führt die Arbeit im process
-Block aus, was der ProcessingRecord Methode entspricht, die in kompilierten Cmdlets verwendet wird. Der process
-Block und die anderen benannten Blöcke werden in about_Functions_Advanced_Methods beschrieben.
Erweiterte Funktionen unterscheiden sich von kompilierten Cmdlets auf folgende Weise:
- Die Bindung erweiterter Funktionsparameter löst keine Ausnahme aus, wenn ein Array von Zeichenfolgen an einen booleschen Parameter gebunden ist.
- Das
ValidateSet
Attribut und dasValidatePattern
Attribut können keine benannten Parameter übergeben. - Erweiterte Funktionen können nicht in Transaktionen verwendet werden.