about_Functions_Advanced

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Functions_Advanced

KURZE BESCHREIBUNG

Stellt erweiterte Funktionen vor, die ähnlich wie Cmdlets fungieren.

LANGE BESCHREIBUNG

Mit den erweiterten Funktionen können Sie Funktionen zur Ausführung von Vorgängen schreiben, die den Vorgänge ähneln, die Sie mit Cmdlets ausführen können. Erweiterte Funktionen sind hilfreich, wenn Sie schnell eine Funktion schreiben möchten, ohne dazu mit der Microsoft .NET Framework-Sprache ein kompiliertes Cmdlet schreiben zu müssen. Diese Funktionen sind außerdem hilfreich, wenn Sie die Funktionalität eines kompilierten Cmdlets beschränken möchten oder wenn Sie eine Funktion schreiben möchten, die einem kompilierten Cmdlet ähnelt.

Es gibt einen Unterschied zwischen dem Erstellen eines kompilierten Cmdlets und einer erweiterten Funktion. Kompilierte Cmdlets sind .NET Framework-Klassen, die in einer .NET Framework-Sprache wie C# geschrieben werden müssen. Im Gegensatz dazu werden erweiterte Funktionen in der Windows PowerShell®-Skriptsprache geschrieben, und zwar in gleicher Weise, wie auch andere Funktionen oder Skriptblöcke geschrieben werden.

Bei erweiterten Funktionen wird das CmdletBinding-Attribut verwendet, um sie als Funktionen zu identifizieren, die ähnlich wie Cmdlets fungieren. Das CmdletBinding-Attribut ähnelt der Cmdlet-Attribut, das in kompilierten Cmdlet-Klassen verwendet wird, um die Klasse als ein 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 Anrede unter Verwendung des angegebenen Namens ausgibt. Beachten Sie auch, dass diese Funktion einen Namen definiert, der ein Paar aus einem Verb (Send) und einem Substantiv (Greeting) enthält, das dem Verb-Substantiv-Paar eines kompilierten Cmdlets ähnelt. Funktionen müssen jedoch keinen Verb-Substantiv-Namen haben.

        function Send-Greeting
        {
          [CmdletBinding()]
          Param(
              [Parameter(Mandatory=$true)]
              [string] $Name
          )
          Process
          {
            write-host ("Hello " + $Name + "!")
          }
        }

Die Parameter der Funktion werden durch das Parameter-Attribut deklariert. Dieses Attribut kann allein verwendet werden, oder es kann mit dem Alias-Attribut oder mehreren anderen Parameter-Validierungsattributen kombiniert werden. Weitere Informationen zum Deklarieren von Parametern (einschließlich dynamischer Parametern, 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. Dies entspricht der ProcessingRecord-Methode, die von kompilierten Cmdlets verwendet wird, um die Daten zu verarbeiten, die an das Cmdlet übergeben werden. Dieser Block wird zusammen mit der Begin- und End-Blöcken wird im Thema „about_Functions_Advanced_Methods“ beschrieben.

Erweiterte Funktionen unterscheiden sich in den folgenden Punkten von kompilierten Cmdlets:

– Die Parameterbindung einer erweiterten Funktion 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

Windows PowerShell-Cmdlets (https://go.microsoft.com/fwlink/?LinkID=135279)