about_Type_Operators

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Type_Operators

KURZE BESCHREIBUNG

Beschreibt die Operatoren, die mit Microsoft .NET Framework-Typen arbeiten.

LANGE BESCHREIBUNG

Die booleschen Operatoren (-is and -isNot) geben an, ob ein Objekt eine Instanz des angegebenen .NET Framework-Typs ist. Der Operator „-is“ gibt den Wert „true“ zurück, wenn der Typ übereinstimmt, andernfalls gibt er den Wert „false“ zurück. Der Operator „-isNot“ gibt den Wert „false“ zurück, wenn der Typ übereinstimmt, andernfalls gibt er den Wert „true“ zurück.

Der Operator „-as“ versucht, das Eingabeobjekt in den angegebenen .NET Framework-Typ zu konvertieren. Im Erfolgsfall wird das konvertierte Objekt zurückgegeben. Andernfalls gibt der Operator nichts zurück. Es wird kein Fehler zurückgegeben.

Die folgende Tabelle führt die Typoperatoren in Windows PowerShell® auf.

    Operator  Description                 Example  
    --------  ------------------------    -------------------------------------
    -is       Returns TRUE when the       C:\PS> (get-date) -is [DateTime]
              input is an instance        True
              of the specified
              .NET Framework type.

    -isNot    Returns TRUE when the       C:\PS> (get-date) -isNot [DateTime]
              input is not an instance    False
              of the specified
              .NET Framework type.
 
    -as       Converts the input to       C:\PS> 12/31/07 -as [DateTime]
              the specified               Monday, December 31, 2007 12:00:00 AM
              .NET Framework type.

Die Syntax der Typoperatoren lautet wie folgt:

        <input> <operator> [.NET type]

Sie können auch die folgende Syntax verwenden:

        <input> <operator> ".NET type"

Um den .NET Framework-Typ anzugeben, schließen Sie den Namen in eckige Klammern ([]) ein, oder geben Sie den Typ als Zeichenfolge ein, beispielsweise [DateTime] oder „DateTime“ für „System.DateTime“. Wenn sich der Typ nicht im Stammverzeichnis des Systemnamespace befindet, geben Sie den vollständigen Namen des Objekttyps ein. Sie können „System.“ weglassen. Um beispielsweise „System.Diagnostics.Process“ anzugeben, können Sie [System.Diagnostics.Process], [Diagnostics.Process] oder „diagnostics.process“ eingeben.

Die Typoperatoren geben immer einen booleschen Wert zurück, auch wenn es sich bei der Eingabe um eine Objektauflistung handelt. Wenn es sich jedoch bei der Eingabe um eine Auflistung handelt, entsprechen die Typoperatoren dem .NET Framework-Typ der Auflistung. Sie entsprechen nicht dem Typ der einzelnen Objekte, selbst wenn alle Objekte vom gleichen Typ sind.

Um den .NET Framework-Typ eines Ereignisses zu ermitteln, verwenden Sie das Cmdlet „Get-Member“. Oder Sie verwenden die GetType-Methode aller Objekte zusammen mit der FullName-Eigenschaft dieser Methode. Die folgende Anweisung ruft z. B. den Typ des Rückgabewerts eines Befehls „Get-Culture“ ab.

        C:\PS> (get-culture).gettype().fullname
        System.Globalization.CultureInfo

BEISPIELE

Die folgenden Beispiele zeigen Verwendungsmöglichkeiten der Typoperatoren:

        C:\PS> 32 -is [Float]
        False

        C:\PS> 32 -is "int"
        True

        C:\PS> (get-date) -is [DateTime]
        True

        C:\PS> "12/31/2007" -is [DateTime]
        False

        C:\PS> "12/31/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

Das folgende Beispiel zeigt: Wenn es sich bei der Eingabe um eine Auflistung von Objekten handelt, ist der entsprechende Typ der .NET Framework-Typ der Auflistung, nicht der Typ der einzelnen Objekte in der Auflistung.

Obwohl in diesem Beispiel die Cmdlets „Get-Culture“ und „Get-UICulture“ System.Globalization.CultureInfo-Objekte zurückgeben, handelt es sich bei einer Auflistung dieser Objekte um ein System.Object-Array.

        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

Die folgenden Beispiele zeigen, wie Sie den Operator „-as“ verwenden.

        C:\PS> "12/31/07" -is [DateTime]
        False

        C:\PS> "12/31/07" -as [DateTime]
        Monday, December 31, 2007 12:00:00 AM

        C:\PS> $date = "12/31/07" -as [DateTime]

        C:\PS>$a -is [DateTime]
        True

        C:\PS> 1031 -as [System.Globalization.CultureInfo]

        LCID             Name             DisplayName
        ----             ----             -----------
        1031             de-DE            German (Germany)

Das folgende Beispiel zeigt: Wenn der -as-Operator das Eingabeobjekt nicht in den .NET Framework-Typ konvertieren kann, gibt er nichts zurück.

        C:\PS> 1031 -as [System.Diagnostic.Process]
        C:\PS>

SIEHE AUCH

about_Operators