Anbietername

Function

Laufwerke

Function:

Kurzbeschreibung

Bietet Zugriff auf die in Windows PowerShell definierten Funktionen.

Ausführliche Beschreibung

Mit dem Windows PowerShell-Function-Anbieter können Sie die Funktionen und Filter in Windows PowerShell abrufen, hinzufügen, ändern, entfernen und löschen.

Eine Funktion ist ein benannter Codeblock, durch den eine Aktion ausgeführt wird. Wenn Sie den Namen der Funktion eingeben, wird der Code in der Funktion ausgeführt. Ein Filter ist ein benannter Codeblock, in dem Bedingungen für eine Aktion festgelegt sind. Sie können den Namen des Filters anstelle der Bedingung eingeben, beispielsweise im Befehl "Where-Object".

Auf dem Laufwerk "Function:" ist Funktionen die Bezeichnung "Function" vorangestellt, und Filtern ist die Bezeichnung "Filter" vorangestellt. Bei Verwendung im richtigen Kontext werden sie jedoch ungeachtet der Bezeichnung ordnungsgemäß ausgeführt.

Der Function-Anbieter ist ein flacher Namespace, der nur aus den Funktions- und Filterobjekten besteht. Weder Funktionen noch Filter verfügen über untergeordnete Elemente.

Jede Funktion ist eine Instanz der System.Management.Automation.FunctionInfo-Klasse. Jeder Filter ist eine Instanz der System.Management.Automation.FilterInfo-Klasse.

In den Beispielen in diesem Abschnitt wird das Verwalten von Funktionen veranschaulicht. Dieselben Methoden gelten jedoch auch für Filter.

Der Function-Anbieter macht seinen Datenspeicher auf dem Laufwerk "Function:" verfügbar. Wenn Sie mit Funktionen arbeiten möchten, können Sie den Speicherort in das Laufwerk "Function:" ändern ("set-location function:"). Alternativ können Sie von einem beliebigen Windows PowerShell-Laufwerk arbeiten. Wenn Sie von einem anderen Speicherort aus auf eine Funktion verweisen möchten, geben Sie den Laufwerknamen (Function:) im Pfad an.

Der Function-Anbieter unterstützt mit Ausnahme von Invoke-Item alle Cmdlets, deren Namen das Substantiv "Item" enthalten. Darüber hinaus unterstützt er die Cmdlets "Get-Content" und "Set-Content". Er unterstützt jedoch keine Cmdlets, die das Substantiv "ItemProperty" enthalten (die ItemProperty-Cmdlets), sowie keinen Filter-Parameter in Cmdlets.

Alle Änderungen an den Funktionen wirken sich nur auf die aktuelle Konsole aus. Wenn Sie die Änderungen speichern möchten, fügen Sie die Funktion dem Windows PowerShell-Profil hinzu, oder verwenden Sie Export-Console, um die aktuelle Konsole zu speichern.

Beispiele

Wechseln zum Laufwerk "Function:"

Abrufen von Funktionen

-------------------------- BEISPIEL 1 --------------------------

Mit diesem Befehl wird die Liste aller Funktionen in der aktuellen Sitzung abgerufen. Sie können diesen Befehl von einem beliebigen Windows PowerShell-Laufwerk aus verwenden.

get-childitem -path function:

-------------------------- BEISPIEL 2 --------------------------

Mit diesem Befehl wird die Funktion "man" vom Laufwerk "Function:" abgerufen. Mit dem Cmdlet "Get-Item" wird die Funktion abgerufen. Der Pipelineoperator (|) sendet das Ergebnis an Format-Table.

Mit dem Wrap-Parameter wird Text in die nächste Zeile übertragen, der nicht in die aktuelle Zeile passt. Mit dem Autosize-Parameter wird die Größe der Tabellenspalten so angepasst, dass diese den Text aufnehmen können.

get-item -path man | format-table -wrap -autosize

Wenn Sie sich auf einem anderen Laufwerk befinden, fügen Sie dem Pfad den Laufwerknamen ("Function:") hinzu.

-------------------------- BEISPIEL 3 --------------------------

Mit beiden Befehlen wird die Funktion "c:" abgerufen. Der erste Befehl kann auf einem beliebigen Laufwerk verwendet werden. Der zweite Befehl wird auf dem Laufwerk "Function:" verwendet.

Da der Name mit einem Doppelpunkt endet und es sich dabei um die Syntax für ein Laufwerk handelt, muss der Pfad mit dem Laufwerknamen qualifiziert werden. Im Laufwerk "Function:" können beide Formate verwendet werden. Im zweiten Befehl stellt der Punkt (.) den aktuellen Speicherort dar.

c:\PS> get-item -path function:c:

PS Function> get-item -path .\c:

Erstellen einer Funktion

-------------------------- BEISPIEL 1 --------------------------

In diesem Befehl wird mit dem Cmdlet "New-Item" eine Funktion mit dem Namen "HKLM:" erstellt. Der Ausdruck in geschweiften Klammern ist der Skriptblock, der durch den Funktionsnamen dargestellt wird.

new-item -path function:hklm: -value {set-location hklm:}

Sie können eine Funktion auch erstellen, indem Sie sie in der Windows PowerShell-Befehlszeile eingeben. Geben Sie beispielsweise "function:hklm: {set-location hklm:}" ein. Wenn Sie sich auf dem Laufwerk "Function:" befinden, können Sie den Laufwerknamen auslassen. Da Sie die Bezeichnung "Filter" nicht in New-Item angeben können, werden Filter als Funktionen bezeichnet, sie können jedoch nicht mit jeder Bezeichnung ordnungsgemäß ausgeführt werden. Wenn ein Filter mit der Bezeichnung "Filter" erstellt werden soll, geben Sie den Filter in der Befehlszeile ein. Geben Sie beispielsweise "filter:Running {$_.Status -eq "Running"}" ein.

-------------------------- BEISPIEL 2 --------------------------

In diesem Befehl wird mit dem Cmdlet "New-Item" eine Funktion mit dem Namen "Csrss" erstellt. Mit dem dynamischen Options-Parameter wird für die Options-Eigenschaft der Funktion der Wert "ReadOnly" angegeben.

new-item -path function: -name csrss -options readonly -value {get-process csrss}

Dieser Befehl kann von einem beliebigen Speicherort aus ausgeführt werden. Wenn Sie sich auf dem Laufwerk "Function:" befinden, können Sie den Pfad mit einem Punkt (.) angeben. Der aktuelle Speicherort wird durch den Punkt (.) dargestellt.

Löschen einer Funktion

-------------------------- BEISPIEL 1 --------------------------

Mit diesem Befehl wird die Funktion "hklm:" aus der aktuellen Sitzung gelöscht.

remove-item function:hklm:

-------------------------- BEISPIEL 2 --------------------------

Mit diesem Befehl werden alle Funktionen aus der aktuellen Sitzung gelöscht, mit Ausnahme der Funktionen, deren Options-Eigenschaft den Wert "Constant" aufweist. Ohne den Force-Parameter werden durch den Befehl keine Funktionen gelöscht, deren Options-Eigenschaft den Wert "ReadOnly" aufweist.

remove-item function:* -force

Wenn Sie alle Funktionen löschen, wird die Eingabeaufforderung gewechselt, da die Funktion "prompt" gelöscht wird, die den Inhalt der Eingabeaufforderung definiert.

Anzeigen der Eigenschaften und Methoden von Funktionen

-------------------------- BEISPIEL 1 --------------------------

In diesem Befehl werden mit dem Cmdlet "Get-Item" alle Funktionen abgerufen. Mit dem Pipelineoperator (|) werden die Ergebnisse an das "Get-Member" gesendet, wodurch die Methoden und Eigenschaften des Objekts angezeigt werden.

get-item -path function:* | get-member

Wenn Sie eine Auflistung von Objekten (z. B. die Auflistung von Funktionen auf dem Laufwerk "Function:") über die Pipeline an Get-Member übergeben, wird von Get-Member jedes Objekt in der Auflistung einzeln ausgewertet, und es werden Informationen zu jedem erkannten Objekttyp zurückgegeben. Wenn alle Objekte denselben Typ aufweisen, werden Informationen zu dem betreffenden Objekttyp zurückgegeben. In diesem Fall sind alle Funktionen FunctionInfo-Objekte. Verwenden Sie zum Abrufen von Informationen über die Auflistung von FunctionInfo-Objekten den InputObject-Parameter von Get-Member. Geben Sie beispielsweise "get-member -InputObject (get-item function:*)" ein. Wenn Sie den InputObject-Parameter angeben, wird von Get-Member anstelle der Objekte in der Auflistung die Auflistung ausgewertet.

-------------------------- BEISPIEL 2 --------------------------

Mit diesem Befehl werden die Werte der Eigenschaften der Funktion "prompt" aufgelistet. Mit dem Cmdlet "Get-Item" wird ein Objekt abgerufen, das die Funktion "prompt" darstellt. Die Ergebnisse werden mit dem Pipelineoperator (|) an den Befehl "Format-List" gesendet. Der Befehl "Format-List" verwendet den Property-Parameter zusammen mit einem Platzhalterzeichen (*), um die Werte sämtlicher Eigenschaften der Funktion "prompt" zu formatieren und anzuzeigen.

get-item function:prompt | format-list -property *

Ändern der Eigenschaften einer Funktion

-------------------------- BEISPIEL 1 --------------------------

Mit dem Cmdlet "Set-Item" und dem dynamischen Options-Parameter können Sie den Wert der Options-Eigenschaft einer Funktion ändern.

Mit diesem Befehl werden die Optionen "AllScope" und "ReadOnly" für die Funktion "prompt" festgelegt. Dieser Befehl verwendet den dynamischen Options-Parameter des Cmdlets "Set-Item". Der Options-Parameter ist nur dann in Set-Item verfügbar, wenn er mit dem Alias- oder dem Function-Anbieter verwendet wird.

set-item -path function:prompt -options "AllScope,ReadOnly"

-------------------------- BEISPIEL 2 --------------------------

Dieser Befehl ändert mit dem Cmdlet "Set-Item" die prompt-Funktion so, dass vor dem Pfad die Uhrzeit angezeigt wird.

set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " " + $(Get-Location) + '> '}

Die Änderung wirkt sich auf die Definition-Eigenschaft und die ScriptBlock-Eigenschaft des FunctionInfo-Objekts aus. Geben Sie "get-item -path function:prompt | format-list -property *" ein, um die Auswirkungen der Änderung anzuzeigen.

-------------------------- BEISPIEL 3 --------------------------

In diesem Befehl wird mit dem Cmdlet "Rename-Item" der Name der Funktion "help" in "gh" geändert.

rename-item -path function:help -newname gh

Kopieren einer Funktion

-------------------------- BEISPIEL 1 --------------------------

Mit diesem Befehl wird die Funktion "prompt" nach "oldPrompt" kopiert, wodurch ein neuer Name für den Skriptblock erstellt wird, der der Funktion "prompt" zugeordnet ist. Damit können Sie die ursprüngliche Funktion "prompt" speichern, wenn Sie diese ändern möchten.

Die Options-Eigenschaft der neuen Funktion weist den Wert "None" auf. Um den Wert der Options-Eigenschaft zu ändern, verwenden Sie Set-Item.

copy-item -path function:prompt -destination function:oldPrompt

Dynamische Parameter

Bei dynamischen Parametern handelt es sich um Cmdlet-Parameter, die von einem Windows PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet auf dem Anbieterlaufwerk verwendet wird.

Options <System.Management.Automation.ScopedItemOptions>

Bestimmt den Wert der Options-Eigenschaft einer Funktion.

Value Description

None

Keine Optionen Der Standardwert ist "None".

Constant

Die Funktion kann nicht gelöscht und ihre Eigenschaften können nicht geändert werden. "Constant" ist nur verfügbar, wenn Sie eine Funktion erstellen. Sie können die Option einer vorhandenen Funktion nicht in "Constant" ändern.

Private

Die Funktion ist nur im aktuellen Bereich (und nicht in untergeordneten Bereichen) sichtbar.

ReadOnly

Die Eigenschaften der Funktion können nicht geändert werden, außer bei Verwendung des Force-Parameters. Sie können die Funktion mithilfe von Remove-Item löschen.

AllScope

Die Funktion wird in alle neuen Bereiche kopiert, die erstellt werden.

Unterstützte Cmdlets

Siehe auch




Inhaltsverzeichnis