about_Type_Operators

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TÓPICO

about_Type_Operators

DESCRIÇÃO BREVE

Descreve os operadores que funcionam com os tipos Microsoft .NET Framework.

DESCRIÇÃO LONGA

Os operadores de tipo booliano (-is e -isNot) informam se um objeto é uma instância de um tipo .NET Framework especificado. O operador -is retorna um valor TRUE se o tipo corresponder e houver um valor FALSE. O operador -isNot retorna um valor FALSE se o tipo corresponder e houver um valor TRUE.

O operador -as tenta converter o objeto de entrada no tipo .NET Framework especificado. Se ele tiver êxito, retornará o objeto convertido. Se ele falhar, não retornará nada. Ele não retorna um erro.

A tabela a seguir lista os operadores de tipo do Windows PowerShell®.

    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.

A sintaxe dos operadores de tipo é a seguinte:

        <input> <operator> [.NET type]

Você também pode usar a sintaxe a seguir:

        <input> <operator> ".NET type"

Para especificar o tipo .NET Framework, coloque o nome do tipo entre colchetes ([ ]) ou digite o tipo como uma cadeia de caracteres, como [DateTime] ou "DateTime" para System.DateTime. Se o tipo não estiver na raiz do namespace do sistema, especifique o nome completo do tipo de objeto. Você pode omitir "System". Por exemplo, para especificar System.Diagnostics.Process, digite [System.Diagnostics.Process], [Diagnostics.Process] ou "diagnostics.process".

Os operadores de tipo sempre retornam um valor booliano, mesmo se a entrada for uma coleção de objetos. No entanto, quando a entrada for uma coleção, os operadores de tipo corresponderão ao tipo .NET Framework da coleção. Eles não correspondem ao tipo de cada objeto, mesmo quando todos os objetos forem do mesmo tipo.

Para localizar o tipo .NET Framework de um objeto, use o cmdlet Get-Member. Ou use o método GetType de todos os objetos junto com a propriedade FullName desse método. Por exemplo, a instrução a seguir obtém o tipo do valor retornado de um comando Get-Culture. Insira o corpo da seção aqui.

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

EXEMPLOS

Os exemplos a seguir mostram alguns usos dos operadores de tipo:

        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

O exemplo a seguir mostra que, quando a entrada é uma coleção de objetos, o tipo correspondente é o tipo .NET Framework da coleção, e não o tipo dos objetos individuais da coleção.

Neste exemplo, embora os cmdlets Get-Culture e Get-UICulture retornem objetos System.Globalization.CultureInfo, uma coleção desses objetos é uma matriz System.Object.

        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

Os exemplos a seguir mostram como usar o operador -as.

        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)

O exemplo a seguir mostra que, quando o operador -as não pode converter o objeto de entrada no tipo .NET Framework, ele não retorna nada.

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

CONSULTE TAMBÉM

about_Operators