Freigeben über


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 Skriptfunktionen, CDXML und Workflows.

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.

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 + "!")
    }
}

Die Parameter der Funktion werden mithilfe des Parameter Attributs deklariert. Dieses Attribut kann allein verwendet werden, oder es kann mit dem Alias-Attribut oder mit mehreren anderen Parameterüberprüfungsattributen kombiniert werden. Weitere Informationen zum Deklarieren von Parametern (einschließlich dynamischer Parameter, die zur Laufzeit hinzugefügt werden), finden Sie unter about_Functions_Advanced_Parameters.

Die eigentliche Arbeit der vorherigen Funktion wird im process Block ausgeführt, was der ProcessingRecord-Methode entspricht, die von kompilierten Cmdlets verwendet wird, um die an das Cmdlet übergebenen Daten zu verarbeiten. Dieser Block zusammen mit den und end den begin Blöcken wird im thema 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 das ValidatePattern Attribut können keine benannten Parameter übergeben.
  • Erweiterte Funktionen können nicht in Transaktionen verwendet werden.

Siehe auch