THEMA
about_methods
KURZBESCHREIBUNG
Beschreibt die Methoden zum Ausführen von Objektaktionen in
Windows PowerShell.
DETAILBESCHREIBUNG
In Windows PowerShell werden die Elemente in Datenspeichern oder
der Zustand des Computers durch strukturierte Auflistungen von
Informationen dargestellt, die als Objekte bezeichnet werden.
Wenn Sie z. B. auf eine Datei in Windows PowerShell zugreifen,
arbeiten Sie nicht mit der eigentlichen Datei. Stattdessen
arbeiten Sie mit einem FileInfo-Objekt, einem Typ von Objekt, das
als Proxy der Datei verwendet wird.
Die meisten Objekte enthalten Methoden. Eine Methode besteht aus
einer Reihe von Anweisungen, die eine bestimmte Aktion angeben,
die für das betreffende Objekt ausgeführt werden kann. Das
FileInfo-Objekt enthält z. B. die CopyTo-Methode, mit der Sie die
vom Objekt dargestellte Datei kopieren können.
Wenn Sie eine Liste von Methoden und Methodendefinitionen
anzeigen möchten, die einem bestimmten Objekt zugeordnet sind,
können Sie das Cmdlet "Get-Member" verwenden. Wenn Sie das Cmdlet
verwenden möchten, muss das Objekt jedoch bereits in einer
bestimmten Form vorhanden sein: Es muss durch eine Variable
dargestellt werden, als Objekt vorliegen, das beim Angeben eines
Befehls als Argument für den Befehl "Get-Member" erstellt wurde,
oder aber als Objekt über eine Pipeline übergeben werden.
Angenommen, der Variablen "$a" wurde ein Zeichenfolgenwert
zugewiesen. Dies bedeutet, dass die Variable einem Zeichenfolgenob
jekt zugeordnet ist. Eine Liste mit den Methoden eines Objekts
können Sie anzeigen, indem Sie an der Windows PowerShell-Eingabeau
fforderung den folgenden Befehl eingeben:
Get-Member -inputobject $a -membertype method
Wenn Sie die Methoden und Methodendefinitionen anzeigen möchten,
die einem über die Pipeline übergebenen Objekt zugeordnet sind,
geben Sie den Befehl "Get-Member" in der Pipeline an, wie im
folgenden Beispiel gezeigt:
Get-ChildItem c:\final.txt | Get-Member -membertype method
Methoden werden am häufigsten aufgerufen, indem der Methodenname
nach einem Objektverweis (z. B. einer Variablen oder einem Ausdruck)
angegeben wird. Sie müssen den Objektverweis und die Methode durch
einen Punkt voneinander trennen. Darüber hinaus müssen Sie
unmittelbar nach dem Methodennamen die Argumente in Klammern
einschließen, die an die Methode übergeben werden sollen.
Wenn in einer Methodensignatur keine Argumente übergeben werden,
müssen Sie dennoch ein Paar leerer Klammern angeben.
Im folgenden Befehl wird mit der GetType-Methode der dem
Zeichenfolgenobjekt "$a" zugeordnete Datentyp zurückgegeben:
$a.GetType()
Mit der GetType-Methode wird der Datentyp für ein beliebiges Objekt
zurückgegeben, und eine Variable stellt immer ein Objekt dar. Der Typ
des Objekts hängt vom Typ der Daten ab, die in der jeweiligen
Variablen gespeichert sind.
Jeder in Windows PowerShell ausgeführten Aktion sind Objekte
zugeordnet, unabhängig davon, ob Sie eine Variable deklarieren
oder Befehle in der Pipeline miteinander kombinieren.
Daher können Methoden in einer Vielzahl von Situationen verwendet
werden. Sie können mit einer Methode beispielsweise eine Aktion
für einen Eigenschaftenwert ausführen, wie im folgenden Beispiel
gezeigt:
(Get-ChildItem c:\final.txt).name.ToUpper()
In diesem Fall ist das Objekt, für das die ToUpper-Methode
aufgerufen wird, das Zeichenfolgenobjekt, das der name-Eigenschaft
zugeordnet ist. (Dieses Beispiel wird nur erfolgreich ausgeführt,
wenn die Datei "Final.txt" im Stammverzeichnis des Laufwerks "C:"
vorhanden ist.) Die Name-Eigenschaft ist eigentlich eine Eigenschaft
des vom Befehl Get-ChildItem zurückgegebenen FileInfo-Objekts. Dies
veranschaulicht nicht nur die objektorientierten Prinzipien von
Windows PowerShell, sondern zeigt auch, wie Methoden für jedes
verfügbare Objekt aufgerufen werden können.
Dieselben Ergebnisse wie im letzten Beispiel können Sie mit einer
Variablen zum Speichern der Ausgabe des Befehls "Get-ChildItem"
erzielen, wie im folgenden Beispiel gezeigt wird:
$a = (Get-ChildItem c:\final.txt).name
$a.ToUpper()
Auch in diesem Befehl wird die ToUpper-Methode des Zeichenfolgenob
jekts verwendet, das der Variablen mit dem vom Befehl
"Get-ChildItem" zurückgegebenen Dateinamen zugeordnet ist.
In einigen Fällen ist für eine Methode ein Argument erforderlich,
das das Ziel der Methode angibt. Das FileInfo-Objekt enthält
beispielsweise die MoveTo-Methode, mit der eine Datei aus einem
Verzeichnis in ein anderes verschoben werden kann. Die Methode
erfordert ein Argument, mit dem der Zielspeicherort für die Datei
angegeben wird. Im folgenden Befehl wird gezeigt, wie das
betreffende Argument angegeben wird:
(Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt")
Mit dem Befehl "Get-ChildItem" wird ein FileInfo-Objekt für die
Datei "Final.txt" zurückgegeben, und anschließend wird mit der
MoveTo-Methode dieses Objekts die Aktion initiiert, wobei der
neue Speicherort für die Datei angegeben wird.
Die einer Methode zugeordneten Argumente finden Sie in der
entsprechenden Methodendefinition. Eine Methodendefinition
enthält eine oder mehrere Methodensignaturen (in Microsoft .NET
Framework auch als Überladung bezeichnet). Eine Methodensignatur
enthält den Namen der Methode und 0 oder mehr Parameter, die beim
Aufrufen der Methode angegeben werden müssen. Die Methodensignatur
en werden in der Anzeige des Cmdlet "Get-Member" von der jeweils
vorherigen Signatur durch ein Komma getrennt. Die CopyTo-Methode
der FileInfo-Klasse enthält beispielsweise die folgenden beiden
Methodensignaturen:
1. CopyTo(String destFileName)
2. CopyTo(String destFileName, Boolean overwrite)
Die erste Methodensignatur akzeptiert den Zieldateinamen
(einschließlich des Pfads), in den die Quelldatei kopiert werden
soll. Im folgenden Beispiel wird mit der ersten CopyTo-Methode
die Datei "Final.txt" in das Verzeichnis "C:\Bin" kopiert:
(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")
Wenn die Datei im Zielverzeichnis bereits vorhanden ist, tritt
beim Ausführen der CopyTo-Methode ein Fehler auf, und in Windows
PowerShell wird die folgende Fehlermeldung ausgegeben:
Ausnahme beim Aufrufen von "CopyTo" mit "1" Argument(en): "Die Datei
'c:\bin\final.txt' ist bereits vorhanden."
In der zweiten Methodensignatur übergeben Sie wie im ersten
Beispiel den Zieldateinamen, Sie übergeben jedoch zusätzlich
einen booleschen Wert und geben damit an, ob eine im
Zielverzeichnis vorhandene Datei mit demselben Namen
überschrieben werden soll, wie im folgenden Beispiel gezeigt wird:
(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)
Beim Übergeben des booleschen Werts müssen Sie die Variable "$True"
verwenden, die von Windows PowerShell automatisch erstellt wird. Die
Variable "$True" enthält den booleschen Wert "True". (Entsprechend
enthält die Variable "$False" den booleschen Wert "False".)
SIEHE AUCH
about_Objects
Get-Member