TEMA
about_Type_Operators
DESCRIPCIÓN BREVE
Describe los operadores que funcionan con tipos de Microsoft .NET
Framework.
DESCRIPCIÓN DETALLADA
Los operadores de tipo booleano (-is y -isnot) indican si un
objeto es una instancia de un tipo de .NET Framework
especificado. El operador -is devuelve el valor TRUE si el tipo
coincide y el valor FALSE en caso contrario. El operador -isnot
devuelve el valor FALSE si el tipo coincide y el valor TRUE en
caso contrario.
El operador -as intenta convertir el objeto de entrada al tipo de
.NET Framework especificado. Si se ejecuta correctamente,
devuelve el objeto convertido. En caso contrario, no devuelve
nada. No devuelve un error.
En la tabla siguiente se enumeran los operadores de tipo de
Windows PowerShell.
Operador Descripción Ejemplo
-------- ------------------------ --------------
-is Devuelve TRUE cuando la C:\PS> (get-date) -is
entrada es una instancia [datetime] True
del tipo de .NET Framework
especificado.
-isnot Devuelve TRUE cuando la C:\PS> (get-date)
entrada no es una instancia -isnot [datetime] False
del tipo de .NET Framework
especificado.
-as Convierte la entrada al C:\PS> 12/31/07 -as [datetime] Monday,
tipo de .NET Framework December 31, 2007 12:00:00 AM
especificado.
Esta es la sintaxis de los operadores de tipo:
<entrada> <operador> [.NET type]
También puede usar la sintaxis siguiente:
<entrada> <operador> ".NET type"
Para especificar el tipo de .NET Framework, incluya el nombre de
tipo entre corchetes ([]) o escriba 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 System, 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,
aunque la entrada sea una colección de objetos. Sin embargo,
cuando la entrada es una colección, los operadores de tipo
coinciden con el tipo de .NET Framework de la colección. No
coinciden con el tipo de cada objeto, incluso en el caso de que
todos los objetos sean del mismo tipo.
Para buscar el tipo de .NET Framework de un objeto, utilice el
cmdlet Get-Member. También puede utilizar el método GetType de
todos los objetos junto con la propiedad FullName de este método.
Por ejemplo, la instrucción siguiente obtiene el tipo del valor
devuelto de un comando Get-Culture:
C:\PS> (get-culture).gettype().fullname
System.Globalization.CultureInfo
EJEMPLOS
En los ejemplos siguientes se muestran algunos usos de los
operadores Type:
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 siguientes se muestra que cuando la entrada es una
colección de objetos, el tipo correspondiente 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 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 la forma de usar 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 siguientes se muestra que cuando 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