THEMA
    about_Functions_Advanced

KURZBESCHREIBUNG
    Bietet eine Einführung in erweiterte Funktionen, die sich ähnlich 
    wie Cmdlets verhalten.

DETAILBESCHREIBUNG
    Mit erweiterten Funktionen können Sie Funktionen für Vorgänge 
    erstellen, die den Vorgängen bei der Ausführung von Cmdlets ähneln. 
    Erweiterte Funktionen sind nützlich, wenn Sie eine Funktion schnell 
    und ohne Erstellen eines kompilierten Cmdlet in einer Microsoft .NET 
    Framework-Programmiersprache erstellen möchten. Diese Funktionen sind 
    auch nützlich, wenn Sie die Funktionalität eines kompilierten Cmdlet 
    einschränken oder eine Funktion erstellen möchten, die einem 
    kompilierten Cmdlet ähnelt.
 

    Zwischen dem Erstellen eines kompilierten Cmdlet und dem 
    Erstellen einer erweiterten Funktion besteht ein Unterschied. 
    Kompilierte Cmdlets sind .NET Framework-Klassen, die in einer 
    .NET Framework-Programmiersprache geschrieben werden müssen, z. B. C#. 
    Im Gegensatz dazu werden erweiterte Funktionen in der 
    Windows PowerShell-Skriptsprache so wie auch andere Funktionen 
    oder Skriptblöcke geschrieben.


    Erweiterte Funktionen werden mit dem CmdletBinding-Attribut als 
    Funktionen bezeichnet, die sich ähnlich wie Cmdlets verhalten. Das 
    CmdletBinding-Attribut ähnelt dem Cmdlet-Attribut, mit dem in 
    kompilierten Cmdlet-Klassen die Klasse als Cmdlet bezeichnet wird. 
    Weitere Informationen über diesem Attribut finden Sie unter 
    "about_Functions_CmdletBindingAttribute".


    Im folgenden Beispiel wird eine Funktion veranschaulicht, die 
    einen Namen akzeptiert und dann einen Gruß mit dem angegebenen 
    Namen ausgibt. Mit dieser Funktion wird ein Name definiert, der 
    ein Paar aus Verb ("Send") und Substantiv ("Greeting") enthält, 
    ähnlich wie das Verb-Substantiv-Paar eines kompilierten Cmdlets. 
    Funktionen müssen jedoch kein Verb-Substantiv-Namen aufweisen. 


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


    Die Parameter der Funktion werden mit dem Parameter-Attribut 
    deklariert. Dieses Attribut kann allein verwendet werden, es kann 
    jedoch auch mit dem Alias-Attribut oder verschiedenen anderen 
    Parametervalidierungsattributen kombiniert werden.
    Weitere Informationen zum Deklarieren von Parametern (u. a. 
    dynamischen, zur Laufzeit hinzugefügten Parametern) finden Sie unter
    about_Functions_Advanced_Parameters. 
 

    Die tatsächliche Aktion der obigen Funktion wird im Process-Block 
    ausgeführt, der der ProcessingRecord-Methode entspricht, mit der 
    kompilierte Cmdlets die an dieses übergebenen Daten verarbeiten. 
    Dieser Block wird zusammen mit dem Begin-Block und dem End-Block 
    im Thema "about_Functions_Advanced_Methods" beschrieben.


    Erweiterte Funktionen unterscheiden sich auf die folgende Weise 
    in kompilierten Cmdlets: 

        - Wenn ein Zeichenfolgenarray an einen booleschen Parameter 
          gebunden wird, tritt bei Bindung erweiterter Funktionsparame
          ter keine Ausnahme auf.

        - Vom ValidateSet-Attribut und vom ValidatePattern-Attribut 
          können keine benannten Parameter übergeben werden.

        - Erweiterte Funktionen können nicht in Transaktionen 
          verwendet werden.

   
SIEHE AUCH
    about_Functions_Advanced_CmdletBindingAttribute 
    about_Functions_Advanced_Methods  
    about_Functions_Advanced_Parameters 
    Windows PowerShell-Cmdlets (https://go.microsoft.com/fwlink/?LinkID=135279, 
    möglicherweise auf Englisch) 




Inhaltsverzeichnis