about_Type_Operators

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Type_Operators

DESCRIPCIÓN BREVE

Describe los operadores que funcionan con tipos de Microsoft .NET Framework.

DESCRIPCIÓN LARGA

Los operadores de tipo booleano (-is e -isNot) indican si un objeto es una instancia de un tipo de .NET Framework especificado. El operador -is devuelve un valor TRUE si el tipo coincide y un valor FALSE en caso contrario. El operador -isNot devuelve un valor FALSE si el tipo coincide y un valor TRUE en caso contrario.

El operador -as intenta convertir el objeto de entrada al tipo de .NET Framework especificado. Si se realiza correctamente, devuelve el objeto convertido. Si se produce un error, no devuelve nada. No devuelve ningún error.

En la tabla siguiente se enumeran los operadores de tipo en 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.

La sintaxis de los operadores de tipo es la siguiente:

        <input> <operator> [.NET type]

También puede utilizar la sintaxis siguiente:

        <input> <operator> ".NET type"

Para especificar el tipo de .NET Framework, encierre el nombre del tipo entre corchetes ([ ]) o especifique el tipo como una cadena, como [DateTime] o "DateTime" para System.DateTime. Si el tipo no está en la raíz del espacio de nombres del sistema, especifique el nombre completo del tipo de objeto. Puede omitir "System.". Por ejemplo, para especificar System.Diagnostics.Process, escriba [System.Diagnostics.Process], [Diagnostics.Process], o "diagnostics.process".

Los operadores de tipo siempre devuelven un valor booleano, incluso si la entrada es una colección de objetos. Sin embargo, cuando la entrada es una colección, los operadores de tipo hacen coincidir el tipo de .NET Framework de la colección. No hacen coincidir el tipo de cada objeto, incluso aunque todos los objetos sean del mismo tipo.

Para buscar el tipo de .NET Framework de un objeto, use el cmdlet Get-Member. O bien, utilice el método GetType de todos los objetos junto con la propiedad FullName de este método. Por ejemplo, la siguiente instrucción obtiene el tipo del valor devuelto de un comando Get-Culture:Insert section body here.

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

EJEMPLOS

En los ejemplos siguientes se muestran algunos usos de los 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

En el ejemplo siguiente se muestra que, si la entrada es una colección de objetos, el tipo de coincidencia es el tipo de .NET Framework de la colección, no el tipo de los objetos individuales de la colección.

En este ejemplo, aunque los cmdlets Get-Culture y Get-UICulture devuelven objetos System.Globalization.CultureInfo, una colección de estos objetos es una matriz de 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

En los ejemplos siguientes se muestra cómo el 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)

En el ejemplo siguiente se muestra que si el operador -as no puede convertir el objeto de entrada al tipo de .NET Framework, no devuelve nada.

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

VEA TAMBIÉN

about_Operators