主題
    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




目錄