THEMA
about_Type_Operators
KURZBESCHREIBUNG
Beschreibt die Operatoren, die mit Microsoft .NET Framework-Typen
verwendet werden können.
DETAILBESCHREIBUNG
Die booleschen Typoperatoren (-is und -isnot) geben an, ob ein
Objekt eine Instanz eines angegebenen .NET Framework-Typs ist.
Der Operator "-is" gibt den Wert TRUE zurück, wenn der Typ
übereinstimmt; andernfalls wird FALSE zurückgegeben. Der Operator
"-isnot" gibt den Wert FALSE zurück, wenn der Typ übereinstimmt;
andernfalls wird TRUE zurückgegeben.
Der Operator "-as" versucht, das Eingabeobjekt in den angegebenen
.NET Framework-Typ zu konvertieren. Wenn dies erfolgreich ist,
wird das konvertierte Objekt zurückgegeben. Andernfalls erfolgt
keine Rückgabe. Es wird kein Fehler zurückgegeben.
In der folgenden Tabelle sind die Typoperatoren in Windows
PowerShell aufgeführt.
Operator Beschreibung Beispiel
-------- ------------------------ --------------
-is Gibt TRUE zurück, wenn C:\PS> (get-date) -is [datetime]
die Eingabe eine Instanz True
des angegebenen
.NET Framework-Typs ist.
-isnot Gibt TRUE zurück, wenn C:\PS> (get-date) -isnot [datetime]
die Eingabe keine Instanz False
des angegebenen
.NET Framework-Typs ist.
-as Konvertiert die Eingabe C:\PS> 31.12.07 -as [datetime]
in den angegebenen Montag, 31. Dezember 2007 00:00:00
.NET Framework-Typ.
Typoperatoren weisen die folgende Syntax auf:
<Eingabe> <Operator> [.NET-Typ]
Sie können auch folgende Syntax verwenden:
<Eingabe> <Operator> ".NET-Typ"
Schließen Sie den Typnamen in Klammern ein ([ ]), oder geben Sie
den Typ als Zeichenfolge ein, beispielsweise [DateTime] oder
"datetime" für System.DateTime, um den .NET Framework-Typ
anzugeben. Geben Sie den vollständigen Namen des Objekttyps an,
wenn sich der Typ nicht am Stamm des Systemnamespaces befindet.
"System" muss nicht angegeben werden. Um beispielsweise
"System.Diagnostics.Process" anzugeben, geben Sie [System.Diagnost
ics.Process], [Diagnostics.Process] oder "diagnostics.process" ein.
Die Typoperatoren geben immer einen booleschen Wert zurück, auch
wenn die Eingabe eine Auflistung von Objekten ist. Wenn die
Eingabe jedoch eine Auflistung darstellt, stimmen die
Typoperatoren mit dem .NET Framework-Typ der Auflistung überein.
Auch wenn alle Objekte den gleichen Typ aufweisen, stimmen sie
nicht mit dem Typ aller Objekte überein.
Um den .NET Framework-Typ eines Objekts zu suchen, verwenden Sie
das Cmdlet "Get-Member". Sie können auch die GetType-Methode
aller Objekte mit der FullName-Eigenschaft dieser Methode
verwenden. Die folgende Anweisung ruft beispielsweise den Typ des
Rückgabewerts eines Get-Culture-Befehls ab:
C:\PS> (get-culture).gettype().fullname
System.Globalization.CultureInfo
BEISPIELE
In den folgenden Beispielen werden einige Verwendungsmöglichkeiten
für Typoperatoren veranschaulicht:
C:\PS> 32 -is [Float]
False
C:\PS> 32 -is "int"
True
C:\PS> (get-date) -is [DateTime]
True
C:\PS> "31.12.2007" -is [DateTime]
False
C:\PS> "31.12.2007" -is [String]
True
C:\PS> (get-process powershell)[0] -is [System.Diagnostics.Process]
True
C:\PS> (get-command get-member) -is [System.Management.Automation.CmdletInfo]
True
Im folgenden Beispiel wird gezeigt, dass der entsprechende Typ
der .NET Framework-Typ der Auflistung und nicht der Typ der
einzelnen Objekte in der Auflistung ist, wenn die Eingabe eine
Auflistung von Objekten darstellt.
In diesem Beispiel stellt eine Auflistung dieser Objekte ein
System.Object-Array dar, auch wenn das Cmdlet "Get-Culture" und
das Cmdlet "Get-UICulture" System.Globalization.CultureInfo-Objekt
e zurückgeben.
C:\PS> (get-culture) -is [System.Globalization.CultureInfo]
True
C:\PS> (get-uiculture) -is [System.Globalization.CultureInfo]
True
C:\PS> (get-culture), (get-uiculture) -is [System.Globalization.CultureInfo]
False
C:\PS> (get-culture), (get-uiculture) -is [Array]
True
C:\PS> (get-culture), (get-uiculture) | foreach {$_ -is [System.Globalization.CultureInfo])
True
True
C:\PS> (get-culture), (get-uiculture) -is [Object]
True
In den folgenden Beispielen wird die Verwendung des Operators
"-as" veranschaulicht.
C:\PS> "31.12.07" -is [datetime]
False
C:\PS> "31.12.07" -as [datetime]
Montag, 31. Dezember 2007 00:00:00
C:\PS> $date = "31.12.07" -as [datetime]
C:\PS>$a -is [datetime]
True
C:\PS> 1031 -as [System.Globalization.CultureInfo]
LCID Name DisplayName
---- ---- -----------
1031 de-DE Deutsch (Deutschland)
Im folgenden Beispiel wird gezeigt, dass keine Rückgabe erfolgt,
wenn das Eingabeobjekt vom Operator "-as" nicht in den .NET
Framework-Typ konvertiert werden kann.
C:\PS> 1031 -as [System.Diagnostic.Process]
C:\PS>
SIEHE AUCH
about_Operators