Freigeben über


Informationen zu Methoden

Kurze Beschreibung

Beschreibt, wie Methoden zum Ausführen von Aktionen für Objekte in PowerShell verwendet werden.

Lange Beschreibung

PowerShell verwendet Objekte, um die Elemente in Datenspeichern oder den Zustand des Computers darzustellen. FileInfo-Objekte stellen beispielsweise die Dateien in Dateisystemlaufwerken und ProcessInfo-Objekte die Prozesse auf dem Computer dar.

Objekte verfügen über Eigenschaften, die Daten zum Objekt speichern, und Methoden, mit denen Sie das Objekt ändern können.

Eine "Methode" ist eine Reihe von Anweisungen, die eine Aktion angeben, die Sie für das Objekt ausführen können. Das -Objekt enthält beispielsweise die CopyTo -Methode, FileInfo die die Datei kopiert, die das FileInfo Objekt darstellt.

Verwenden Sie Get-Member das Cmdlet, um die Methoden eines beliebigen Objekts abzurufen. Verwenden Sie die MemberType-Eigenschaft mit dem Wert "Method". Mit dem folgenden Befehl werden die Methoden von Prozessobjekten abgerufen.

Get-Process | Get-Member -MemberType Method
TypeName: System.Diagnostics.Process

Name                      MemberType Definition
----                      ---------- ----------
BeginErrorReadLine        Method     System.Void BeginErrorReadLine()
BeginOutputReadLine       Method     System.Void BeginOutputReadLine()
...
Kill                      Method     System.Void Kill()
Refresh                   Method     System.Void Refresh()
Start                     Method     bool Start()
ToString                  Method     string ToString()
WaitForExit               Method     bool WaitForExit(int milliseconds), ...
WaitForInputIdle          Method     bool WaitForInputIdle(int millisecon...

Um eine Methode eines Objekts auszuführen oder aufzurufen, geben Sie einen Punkt (.), den Methodennamen und eine Reihe von Klammern "()" ein. Wenn die Methode Über Argumente verfügt, platzieren Sie die Argumentwerte in den Klammern. Die Klammern sind für jeden Methodenaufruf erforderlich, auch wenn keine Argumente vorhanden sind. Wenn die Methode mehrere Argumente akzeptiert, sollten diese durch Kommas getrennt werden.

Mit dem folgenden Befehl wird beispielsweise die Kill-Methode von Prozessen aufgerufen, um den Editor-Prozess auf dem Computer zu beenden.

$notepad = Get-Process notepad
$notepad.Kill()

Dieses Beispiel kann verkürzt werden, indem die obigen Anweisungen kombiniert werden.

(Get-Process Notepad).Kill()

Der Get-Process Befehl wird in Klammern eingeschlossen, um sicherzustellen, dass er ausgeführt wird, bevor die Kill-Methode aufgerufen wird. Die Kill -Methode wird dann für das zurückgegebene Process Objekt aufgerufen.

Eine weitere sehr nützliche Methode ist die Replace Methode von Zeichenfolgen. Die Replace -Methode ersetzt Text in einer Zeichenfolge. Im folgenden Beispiel kann der Punkt (.) direkt nach dem Ende des Anführungszeichens der Zeichenfolge platziert werden.

'this is rocket science'.Replace('rocket', 'rock')
this is rock science

Wie in den vorherigen Beispielen gezeigt, können Sie eine Methode für ein Objekt aufrufen, das Sie mithilfe eines Befehls, eines Objekts in einer Variablen oder eines beliebigen Objekts abrufen (z. B. eine Zeichenfolge in Anführungszeichen).

Ab PowerShell 4.0 wird der Methodenaufruf mithilfe dynamischer Methodennamen unterstützt.

Lernen über Methoden

Um Definitionen der Methoden eines Objekts zu finden, wechseln Sie zum Hilfethema für den Objekttyp in MSDN, und suchen Sie nach der Seite methoden. Auf der folgenden Seite werden beispielsweise die Methoden der Prozessobjekte System.Diagnostics.Process beschrieben.

Um die Argumente einer Methode zu bestimmen, überprüfen Sie die Methodendefinition, die dem Syntaxdiagramm eines PowerShell-Cmdlets ähnelt.

Eine Methodendefinition kann eine oder mehrere Methodensignaturen aufweisen, die den Parametersätzen von PowerShell-Cmdlets ähneln. Die Signaturen zeigen alle gültigen Formate von Befehlen an, um die -Methode aufzurufen.

Die -Methode der FileInfo -Klasse enthält beispielsweise CopyTo die folgenden beiden Methodensignaturen:

    CopyTo(String destFileName)
    CopyTo(String destFileName, Boolean overwrite)

Die erste Methodensignatur nimmt den Zieldateinamen (und einen Pfad) an. Im folgenden Beispiel wird die erste CopyTo Methode verwendet, um die Datei in das Final.txtC:\Bin Verzeichnis zu kopieren.

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

Hinweis

Im Gegensatz zum Argumentmodus von PowerShell werden Objektmethoden im Ausdrucksmodus ausgeführt, bei dem es sich um eine Passthrough an das .NET Framework handelt, auf dem PowerShell basiert. Im Ausdrucksmodus sind Bareword-Argumente (Zeichenfolgen ohne Zitate) nicht zulässig. Sie können dies im Differenzpfad als Parameter im Vergleich zum Pfad als Argument sehen. Weitere Informationen zu Analysemodi finden Sie in about_Parsing

Die zweite Methodensignatur verwendet einen Zieldateinamen und einen booleschen Wert, der bestimmt, ob die Zieldatei überschrieben werden soll, sofern sie bereits vorhanden ist.

Im folgenden Beispiel wird die zweite CopyTo Methode verwendet, um die Final.txt Datei in das C:\Bin Verzeichnis zu kopieren und vorhandene Dateien zu überschreiben.

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

Methoden von skalaren Objekten und Sammlungen

Die Methoden eines ("skalaren") Objekts eines bestimmten Typs unterscheiden sich häufig von den Methoden einer Auflistung von Objekten desselben Typs.

Beispielsweise verfügt jeder Prozess über eine Kill -Methode, aber eine Auflistung von Prozessen verfügt nicht über eine Kill-Methode.

Ab PowerShell 3.0 versucht PowerShell, Skriptfehler zu verhindern, die sich aus den unterschiedlichen Methoden skalarer Objekte und Auflistungen ergeben.

Wenn Sie eine Auflistung übermitteln, aber eine Methode anfordern, die nur für einzelne ("skalare") Objekte vorhanden ist, ruft PowerShell die -Methode für jedes Objekt in der Auflistung auf.

Wenn die -Methode für die einzelnen Objekte und die Auflistung vorhanden ist, wird nur die -Methode der Auflistung aufgerufen.

Dieses Feature funktioniert auch für Eigenschaften skalarer Objekte und Auflistungen. Weitere Informationen finden Sie unter about_Properties.

Beispiele

Im folgenden Beispiel wird die Kill-Methode einzelner Prozessobjekte für eine Auflistung von Prozessobjekten ausgeführt. Dieses Beispiel funktioniert nur für PowerShell 3.0 und höhere Versionen von PowerShell.

Mit dem ersten Befehl werden drei Instanzen des Editor-Prozesses gestartet. Der zweite Befehl verwendet den Get-Process Befehl, um alle drei instance des Editor-Prozesses abzurufen und in der variablen $p zu speichern.

Notepad; Notepad; Notepad
$p = Get-Process Notepad

Der dritte Befehl verwendet die Count-Eigenschaft aller Auflistungen, um zu überprüfen, ob die variable $p drei Prozesse enthält.

$p.Count
3

Mit dem vierten Befehl wird die Kill-Methode für alle drei Prozesse in der variablen $p ausgeführt.

Dieser Befehl funktioniert, obwohl eine Auflistung von Prozessen über keine Kill -Methode verfügt.

$p.Kill()

Der fünfte Befehl verwendet den befehl Get-Process, um zu bestätigen, dass der Kill Befehl funktioniert hat.

Get-Process Notepad
Get-Process : Cannot find a process with the name "notepad". Verify the proc
ess name and call the cmdlet again.
At line:1 char:12
+ Get-Process <<<<  notepad
    + CategoryInfo          : ObjectNotFound: (notepad:String) [Get-Process]
, ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShel
l.Commands.GetProcessCommand

Um dieselbe Aufgabe in PowerShell 2.0 auszuführen, verwenden Sie das Foreach-Object Cmdlet, um die -Methode für jedes Objekt in der Auflistung auszuführen.

$p | ForEach-Object {$_.Kill()}

ForEach- und Where-Methoden

Ab PowerShell 4.0 wird die Sammlungsfilterung mithilfe einer Methodensyntax unterstützt. Dies ermöglicht die Verwendung von zwei neuen Methoden beim Umgang mit Sammlungen ForEach und Where.

Weitere Informationen zu diesen Methoden finden Sie unter about_arrays.

Weitere Informationen

about_Objects

about_Properties

Get-Member