Share via


Informationen zu Functions CmdletBindingAttribute

Kurze Beschreibung

Beschreibt das Attribut, durch das eine Funktion wie ein kompiliertes Cmdlet funktioniert.

Lange Beschreibung

Das CmdletBinding Attribut ist ein Attribut von Funktionen, mit dem sie wie kompilierte Cmdlets funktionieren, die in C# geschrieben wurden. Sie bietet Zugriff auf die Features von Cmdlets.

PowerShell bindet die Parameter von Funktionen, die über das CmdletBinding -Attribut verfügen, auf die gleiche Weise wie die Parameter von kompilierten Cmdlets. Die $PSCmdlet automatische Variable ist für Funktionen mit dem CmdletBinding -Attribut verfügbar, aber die $Args Variable ist nicht verfügbar.

In Funktionen, die über das CmdletBinding -Attribut verfügen, verursachen unbekannte Parameter und Positionsargumente, die keine übereinstimmenden Positionsparameter haben, einen Fehler bei der Parameterbindung.

Hinweis

Kompilierte Cmdlets verwenden das erforderliche Cmdlet Attribut, das dem CmdletBinding in diesem Thema beschriebenen Attribut ähnelt.

Syntax

Das folgende Beispiel zeigt das Format einer Funktion, die alle optionalen Argumente des CmdletBinding Attributs angibt. Diesem Beispiel folgt eine kurze Beschreibung der einzelnen Argumente.

{
    [CmdletBinding(ConfirmImpact=<String>,
    DefaultParameterSetName=<String>,
    HelpURI=<URI>,
    SupportsPaging=<Boolean>,
    SupportsShouldProcess=<Boolean>,
    PositionalBinding=<Boolean>)]

    Param ($Parameter1)
    Begin{}
    Process{}
    End{}
}

ConfirmImpact

Das Argument ConfirmImpact gibt an, wann die Aktion der Funktion durch einen Aufruf der ShouldProcess-Methode bestätigt werden soll. Der Aufruf der ShouldProcess-Methode zeigt nur dann eine Bestätigungsaufforderung an, wenn das ConfirmImpact-Argument gleich oder größer ist als der Wert der Einstellungsvariable $ConfirmPreference . (Der Standardwert des Arguments ist Medium.) Geben Sie dieses Argument nur an, wenn auch das Argument SupportsShouldProcess angegeben ist.

Weitere Informationen zu Bestätigungsanforderungen finden Sie unter Anfordern einer Bestätigung.

DefaultParameterSetName

Das Argument DefaultParameterSetName gibt den Namen des Parametersatzes an, den PowerShell zu verwenden versucht, wenn der zu verwendende Parametersatz nicht bestimmt werden kann. Sie können dieses Problem vermeiden, indem Sie den eindeutigen Parameter jedes Parameters als obligatorischen Parameter festlegen.

HelpURI

Das Argument HelpURI gibt die Internetadresse der Onlineversion des Hilfethemas an, das die Funktion beschreibt. Der Wert des Arguments HelpURI muss mit "http" oder "https" beginnen.

Der Argumentwert HelpURI wird für den Wert der HelpURI-Eigenschaft des CommandInfo-Objekts verwendet, das Get-Command für die Funktion zurückgegeben wird.

Wenn Jedoch Hilfedateien auf dem Computer installiert sind und der Wert des ersten Links im Abschnitt RelatedLinks der Hilfedatei ein URI ist oder der Wert der ersten .Link Direktive in der kommentarbasierten Hilfe ein URI ist, wird der URI in der Hilfedatei als Wert der HelpUri-Eigenschaft der Funktion verwendet.

Das Get-Help Cmdlet verwendet den Wert der HelpURI-Eigenschaft , um die Onlineversion des Funktionshilfethemas zu suchen, wenn der Online-Parameter von Get-Help in einem Befehl angegeben ist.

SupportsPaging

Das SupportsPaging-Argument fügt der Funktion die Parameter First, Skip und IncludeTotalCount hinzu. Mit diesen Parametern können Benutzer die Ausgabe aus einem sehr großen Resultset auswählen. Dieses Argument ist für Cmdlets und Funktionen konzipiert, die Daten aus großen Datenspeichern zurückgeben, die die Datenauswahl unterstützen, z. B. eine SQL-Datenbank.

Dieses Argument wurde in Windows PowerShell 3.0 eingeführt.

  • First: Ruft nur die ersten n-Objekte ab.
  • Überspringen: Ignoriert die ersten n-Objekte und ruft dann die verbleibenden Objekte ab.
  • IncludeTotalCount: Gibt die Anzahl der Objekte im Dataset (eine ganze Zahl) gefolgt von den -Objekten an. Wenn das Cmdlet die Gesamtanzahl nicht ermitteln kann, wird "Unbekannte Gesamtanzahl" zurückgegeben.

PowerShell enthält NewTotalCount, eine Hilfsmethode, die den zurückzugebenden Gesamtanzahlwert abruft und eine Schätzung der Genauigkeit des Gesamtanzahlwerts enthält.

Die folgende Beispielfunktion zeigt, wie Sie einer erweiterten Funktion Unterstützung für die Pagingparameter hinzufügen.

function Get-Numbers {
    [CmdletBinding(SupportsPaging = $true)]
    param()

    $FirstNumber = [Math]::Min($PSCmdlet.PagingParameters.Skip, 100)
    $LastNumber = [Math]::Min($PSCmdlet.PagingParameters.First +
      $FirstNumber - 1, 100)

    if ($PSCmdlet.PagingParameters.IncludeTotalCount) {
        $TotalCountAccuracy = 1.0
        $TotalCount = $PSCmdlet.PagingParameters.NewTotalCount(100,
          $TotalCountAccuracy)
        Write-Output $TotalCount
    }
    $FirstNumber .. $LastNumber | Write-Output
}

SupportsShouldProcess

Das SupportsShouldProcess-Argument fügt der Funktion die Parameter Confirm und WhatIf hinzu. Der Confirm-Parameter fordert den Benutzer auf, bevor er den Befehl für jedes Objekt in der Pipeline ausführt. Der WhatIf-Parameter listet die Änderungen auf, die der Befehl vornehmen würde, anstatt den Befehl auszuführen.

PositionalBinding

Das Argument PositionalBinding bestimmt, ob Parameter in der Funktion standardmäßig positional sind. Standardwert: $True. Sie können das Argument PositionalBinding mit dem Wert von $False verwenden, um die Positionsbindung zu deaktivieren.

Das Argument PositionalBinding wird in Windows PowerShell 3.0 eingeführt.

Wenn Parameter positional sind, ist der Parametername optional. PowerShell ordnet den Funktionsparametern unbenannte Parameterwerte entsprechend der Reihenfolge oder Position der unbenannten Parameterwerte im Funktionsbefehl zu.

Wenn Parameter nicht positional sind (sie sind "benannt"), ist der Parametername (oder eine Abkürzung oder ein Alias des Namens) im Befehl erforderlich.

Wenn PositionalBinding auf festgelegt ist $True, sind Funktionsparameter standardmäßig positional. PowerShell weist den Parametern die Positionsnummer in der Reihenfolge zu, in der sie in der Funktion deklariert werden.

Wenn PositionalBinding ist $False, sind Funktionsparameter standardmäßig nicht positional. Es sei denn, das Argument Position des Parameter-Attributs wird für den Parameter deklariert, muss der Parametername (oder ein Alias oder eine Abkürzung) eingeschlossen werden, wenn der Parameter in einer Funktion verwendet wird.

Das Argument Position des Parameter-Attributs hat Vorrang vor dem PositionalBinding-Standardwert . Sie können das Argument Position verwenden, um einen Positionswert für einen Parameter anzugeben. Weitere Informationen zum Argument Position finden Sie unter about_Functions_Advanced_Parameters.

Hinweise

Das SupportsTransactions-Argument wird in erweiterten Funktionen nicht unterstützt.

Schlüsselwörter

about_Functions_CmdletBinding_Attribute

Weitere Informationen

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_OutputTypeAttribute