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 beteiligt ist. 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 ausgibt. Beachten Sie auch, dass diese Funktion einen Namen definiert, der ein Verb (Senden) und ein Nomenpaar (Gruß) wie das Verb-Nomen-Paar eines kompilierten Cmdlets enthält. Funktionen sind jedoch nicht erforderlich, um einen Verb-Nomen-Namen zu haben.

function Send-Greeting
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    Process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

Die Parameter der Funktion werden mit dem Parameter -Attribut deklariert. Dieses Attribut kann allein verwendet werden, oder es kann mit dem Alias-Attribut oder mit mehreren anderen Parametervalidierungsattributen 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, der der ProcessingRecord-Methode entspricht, die von kompilierten Cmdlets verwendet wird, um die Daten zu verarbeiten, die an das Cmdlet übergeben werden. Dieser Block wird zusammen mit den begin Blöcken und end im Thema about_Functions_Advanced_Methods beschrieben.

Erweiterte Funktionen unterscheiden sich von kompilierten Cmdlets auf folgende Weise:

  • Die erweiterte Funktionsparameterbindung 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.

Weitere Informationen