Freigeben über


Informationen zu Erweiterten Funktionen

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. Dies umfasst 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 fungieren. Das CmdletBinding Attribut ähnelt dem Cmdlet-Attribut, das in kompilierten Cmdletklassen 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 außerdem, dass diese Funktion einen Namen definiert, der ein Verb (Send) und nomen (Greeting)-Paar wie das Verb-Nomen-Paar eines kompilierten Cmdlets enthält. Funktionen sind jedoch nicht erforderlich, um über einen Verb-Nomen-Namen zu verfügen.

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 oder 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 Prozessblock 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 Blöcken Anfang und Ende im Thema about_Functions_Advanced_Methods beschrieben.

Erweiterte Funktionen unterscheiden sich wie folgt von kompilierten Cmdlets:

  • 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.

SIEHE AUCH

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute