about_Type_Operators
主題
about_Type_Operators
簡短描述
說明搭配 Microsoft .NET Framework 型別使用的運算子。
完整描述
從布林值型別運算子 (-is 或 -isnot) 可以看出物件是否為指定之 .NET Framework
型別的執行個體。如果型別相符,則 -is 運算子會傳回 TRUE 值,否則會傳回 FALSE 值。
如果型別相符,則 -isnot 運算子會傳回 FALSE 值,否則會傳回 TRUE 值。
-as 運算子會嘗試將輸入物件轉換成指定的 .NET Framework 型別。如果成功,則會
傳回轉換的物件。如果失敗,不會傳回任何結果,也不會傳回錯誤。
下表列出 Windows PowerShell 中的型別運算子。
運算子 描述 範例
-------- ------------------------ ----------------------------------------
-is 當輸入為指定之 .NET Framework C:\PS> (get-date) -is [datetime] True
型別的執行個體時,會傳回 TRUE。
-isnot 當輸入不是指定之 .NETFramework C:\PS> (get-date) -isnot [datetime] False
型別的執行個體時,會傳回 TRUE。
-as 將輸入轉換成指定的 .NET C:\PS> 12/31/07 -as
Framework 型別。 [datetime] Monday, December 31, 2007 12:00:00 AM
型別運算子的語法如下:
<輸入> <運算子> [.NET 型別]
您也可以使用下列語法:
<輸入> <運算子> ".NET 型別"
若要指定 .NET Framework 型別,請以方括號 ([ ]) 括住型別名稱,或是輸入型別做
為字串,例如 [DateTime] 或 "datetime" 表示 System.DateTime。如果型別不在
系統命名空間的根目錄中,請指定物件類型的完整名稱。您可以省略 "System."。例如,
若
要指定 System.Diagnostics.Process,請輸入 [System.Diagnostics.Process]、
[Diagnostics.Process] 或 "diagnostics.process"。
即使輸入是物件集合,型別運算子仍一律會傳回布林值。不過,當輸入是集合時,型別運
算子會符合集合的 .NET Framework 型別。即使所有物件都屬於同一型別,型別運算子
仍不會符合每一個物件的型別。
若要尋找物件的 .NET Framework 型別,請使用 Get-Member Cmdlet。或者,將所
有物件的 GetType 方法與此方法的 FullName 屬性搭配使用。例如,下列陳述式會取
得 Get-Culture 命令傳回值的型別:
C:\PS> (get-culture).gettype().fullname
System.Globalization.CultureInfo
範例
下列範例會示範 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
下列範例會示範當輸入是物件集合時,相符型別為集合的 .NET Framework 型別,而不
是集合中個別物件的型別。
在此範例中,雖然 Get-Culture 和 Get-UICulture Cmdlet 都傳回
System.Globalization.CultureInfo 物件,但是這些物件的集合是
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
下列範例會示範如何使用 -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> 1028 -as [System.Globalization.CultureInfo]
LCID 名稱 DisplayName
---- ---- -----------
1028 zh-TW 中文 (台灣)
下列範例會示範,當 -as 運算子無法將輸入物件轉換成 .NET Framework 型別時,不
會傳回任何結果。
C:\PS> 1028 -as [System.Diagnostic.Process]
C:\PS>
請參閱
about_Operators