TÓPICO
about_Type_Operators
DESCRIÇÃO RESUMIDA
Descreve os operadores que funcionam com os tipos do Microsoft .NET Framework.
DESCRIÇÃO LONGA
Os operadores de tipo booleanos (-is e -isnot) informam se um
objeto é uma instância de um tipo especificado do .NET Framework.
O operador -is retornará um valor TRUE se o tipo corresponder;
caso contrário, um valor FALSE. O operador -isnot retornará um
valor FALSE se o tipo corresponder; caso contrário, um valor TRUE.
O operador -as tenta converter o objeto de entrada ao tipo
especificado do .NET Framework. Se tiver sucesso, retornará o
objeto convertido. Se falhar, não retornará nada. Ele não retorna
erro.
A tabela a seguir lista os operadores de tipo no Windows PowerShell.
Operador Descrição Exemplo
-------- ------------------------ -------------------------------------
-is Retorna TRUE quando a C:\PS> (get-date) -is [datetime] True
entrada é uma instância
do tipo especificado do
.NET Framework.
-isnot Retorna TRUE quando a C:\PS> (get-date) -isnot [datetime] False
entrada não é uma instância
do tipo especificado do
.NET Framework.
-as Converte a entrada ao C:\PS> 31/12/07 -as [datetime] Segunda-feira,
tipo especificado do 31 de dezembro de 2007 00:00:00
.NET Framework.
A sintaxe dos operadores de tipo é a seguinte:
<entrada> <operador> [.NET type]
Você também pode usar a sintaxe a seguir:
<entrada> <operador> ".NET type"
Para especificar o tipo do .NET Framework, coloque o nome do tipo
entre colchetes ([]) ou insira 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.Proces
s, insira [System.Diagnostics.Process], [Diagnostics.Process] ou
"diagnostics.process".
Os operadores de tipo sempre retornam um valor booleano, mesmo
que a entrada seja uma coleção de objetos. Contudo, quando a
entrada é uma coleção, os operadores de tipo fazem a
correspondência com o tipo do .NET Framework para a coleção. Eles
não fazem a correspondência com o tipo de cada objeto, nem mesmo
quando todos os objetos são do mesmo tipo.
Para localizar o tipo do .NET Framework para um objeto, use o
cmdlet Get-Member. Ou então 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 de retorno de
um comando Get-Culture:
C:\PS> (get-culture).gettype().fullname
System.Globalization.CultureInfo
EXEMPLOS
Os exemplos a seguir mostram alguns usos dos operadores Type:
C:\PS> 32 -is [Float]
False
C:\PS> 32 -is "int"
True
C:\PS> (get-date) -is [DateTime]
True
C:\PS> "31/12/2007" -is [DateTime]
False
C:\PS> "31/12/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 do .NET Framework para a
coleção, e não o tipo dos objetos individuais na 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> "31/12/07" -is [datetime]
False
C:\PS> "31/12/07" -as [datetime]
Segunda-feira, 31 de dezembro de 2007 00:00:00
C:\PS> $date = "31/12/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 ao tipo do .NET Framework, ele não
retorna nada.
C:\PS> 1031 -as [System.Diagnostic.Process]
C:\PS>
CONSULTE TAMBÉM
about_Operators