about_Functions_CmdletBindingAttribute
Kurze Beschreibung
Beschreibt das Attribut, 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.
Wenn Sie das CmdletBinding
Attribut verwenden, fügt PowerShell automatisch die allgemeinen Parameter hinzu. Sie können keine Parameter erstellen, die dieselben Namen wie die allgemeinen Parameter verwenden. Weitere Informationen findest du unter about_CommonParameters.
PowerShell bindet die Parameter von Funktionen, die das CmdletBinding
Attribut auf die gleiche Weise aufweisen, wie sie die Parameter von kompilierten Cmdlets bindet. Die $PSCmdlet
automatische Variable ist für Funktionen mit dem CmdletBinding
Attribut verfügbar, die Variable ist jedoch $Args
nicht verfügbar.
In Funktionen mit dem CmdletBinding
Attribut führen unbekannte Parameter und Positionsargumente ohne übereinstimmende Positionsparameter dazu, dass die Parameterbindung fehlschlägt.
Hinweis
Kompilierte Cmdlets verwenden das erforderliche Cmdlet
Attribut, das dem CmdletBinding
attribut ähnelt, das in diesem Thema beschrieben wird.
Syntax
Das folgende Beispiel zeigt das Format einer Funktion, die alle optionalen Argumente des CmdletBinding
Attributs angibt. Eine kurze Beschreibung der einzelnen Argumente folgt diesem Beispiel.
{
[CmdletBinding(ConfirmImpact=<String>,
DefaultParameterSetName=<String>,
HelpURI=<URI>,
SupportsPaging=<Boolean>,
SupportsShouldProcess=<Boolean>,
PositionalBinding=<Boolean>)]
Param ($Parameter1)
Begin{}
Process{}
End{}
}
Die booleschen Argumenttypen des CmdletBinding-Attributs standardmäßig auf "False ", wenn sie aus dem CmdletBinding-Attribut weggelassen werden. Legen Sie den Argumentwert auf $true
das Argument fest oder listen Sie das Argument einfach anhand des Namens auf. Die folgenden CmdletBinding-Attribute sind z. B. gleichwertig.
{
[CmdletBinding(SupportsPaging=$true)]
Param ($Parameter1)
Begin{}
Process{}
End{}
}
# Boolean arguments can be defined using this shorthand syntax
{
[CmdletBinding(SupportsPaging)]
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 eine Bestätigungsaufforderung nur an, wenn das ConfirmImpact-Argument gleich oder größer als der Wert der $ConfirmPreference
Einstellungsvariable ist. (Der Standardwert des Arguments ist Mittel.) Geben Sie dieses Argument nur an, wenn das Argument SupportsShouldProcess ebenfalls angegeben wird.
Weitere Informationen zu Bestätigungsanforderungen finden Sie unter Anfordern einer Bestätigung.
DefaultParameterSetName
Das Argument DefaultParameterSetName gibt den Namen des Parametersatzes an, den PowerShell verwenden soll, wenn er nicht bestimmen kann, welcher Parameter verwendet werden soll. Sie können dieses Problem vermeiden, indem Sie den eindeutigen Parameter jedes Parameters als obligatorischen Parameter festlegen.
Hilfe-URI
Das HelpURI-Argument gibt die Internetadresse der Onlineversion des Hilfethemas an, die die Funktion beschreibt. Der Wert des HelpURI-Arguments muss mit "http" oder "https" beginnen.
Der Wert des HelpURI-Arguments wird für den Wert der HelpURI-Eigenschaft des CommandInfo-Objekts verwendet, das Get-Command
für die Funktion zurückgegeben wird.
Wenn Hilfedateien jedoch 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-ParameterGet-Help
in einem Befehl angegeben wird.
SupportsPaging
Das Argument SupportsPaging 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 wurde für Cmdlets und Funktionen entwickelt, 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.
- Zuerst: Ruft nur die ersten "n"-Objekte ab.
- Überspringen: Ignoriert die ersten n-Objekte und ruft dann die verbleibenden Objekte ab.
- IncludeTotalCount: Meldet die Anzahl der Objekte im Dataset (eine ganze Zahl), gefolgt von den Objekten. Wenn das Cmdlet die Gesamtanzahl nicht ermitteln kann, wird "Unbekannte Gesamtanzahl" zurückgegeben.
PowerShell enthält NewTotalCount, eine Hilfsmethode, die den zurückzugebenden Gesamtanzahlswert abruft und eine Schätzung der Genauigkeit des Gesamtanzahlswerts enthält.
Die folgende Beispielfunktion zeigt, wie Sie unterstützung für die Pagingparameter zu einer erweiterten Funktion hinzufügen.
function Get-Numbers {
[CmdletBinding(SupportsPaging)]
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 Argument SupportsShouldProcess fügt "Confirm " und "WhatIf" -Parameter zur Funktion hinzu. Der Parameter Confirm 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. Der Standardwert ist $True
. Sie können das Argument PositionalBinding mit einem Wert zum Deaktivieren der $False
Positionsbindung verwenden.
Das Argument PositionalBinding wird in Windows PowerShell 3.0 eingeführt.
Wenn Parameter positional sind, ist der Parametername optional. PowerShell ordnet nicht benannte Parameterwerte den Funktionsparametern entsprechend der Reihenfolge oder Position der Werte für nicht benannte Parameter 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 " lautet $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 " lautet $False
, sind Funktionsparameter standardmäßig nicht positional. Sofern das Argument Position des Parameter-Attributs nicht für den Parameter deklariert ist, 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 Standardwert PositionalBinding . 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 Argument SupportsTransactions wird in erweiterten Funktionen nicht unterstützt.
Schlüsselwörter
about_Functions_CmdletBinding_Attribute