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_Advanced_Methods
about_Functions_Advanced_Parameters