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