次の方法で共有


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       入力内容が、指定された          C:\PS> (get-date) -is [datetime]
          .NET Framework 型のインス         True
          タンスである場合に TRUE 
          を返します。

    -isnot    入力内容が、指定された          C:\PS> (get-date) -isnot [datetime]
          .NET Framework 型のインスタ      False
          ンスでない場合に TRUE 
          を返します。
 
    -as       入力内容を指定された           C:\PS> 12/31/07 -as [datetime]
          .NET Framework 型に変換します。  Monday, December 31, 2007 12:00:00 AM


    型演算子の構文は次のとおりです。

        <input> <operator> [.NET type]

    次の構文を使用することもできます。

        <input> <operator> ".NET type"
 

    .NET Framework 型を指定するには、型名を角かっこ ([ ]) で囲むか、型を文字列として入力します。たとえ
    ば、System.DateTime であれば、「[DateTime]」または「"datetime"」のように入力します。型が 
    system 名前空間のルートに存在しない場合は、オブジェクトの型をフル ネームで指定します。"System." は
    省略できます。たとえば、System.Diagnostics.Process を指定する場合、
    「[System.Diagnostics.Process]」、「[Diagnostics.Process]」、「"diagnostics.process"」のように入力します。

    型演算子は常にブール値を返します。オブジェクトのコレクションを入力として渡した場合も同様です。
    ただし、入力がコレクションの場合、比較の対象は、コレクションの .NET Framework 型です。
    すべてのオブジェクトが同じ型であったとしても、個々のオブジェクトの型が比較されるわけではありません。

    オブジェクトの .NET Framework 型を探すには、Get-Member コマンドレットを使用します。また、すべての
    オブジェクトが備えている GetType メソッドに、その FullName プロパティを組み合わせて使用する方法もあ
    ります。たとえば、次のステートメントでは、Get-Culture コマンドの戻り値の型を取得します。

        C:\PS> (get-culture).gettype().fullname
        System.Globalization.CultureInfo
 

例
    次の例は、型演算子の用法をいくつか示しています。

        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 のどちらのコマンドレットも System.Globalizati
    on.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> 1031 -as [System.Globalization.CultureInfo]

        LCID             Name             DisplayName
        ----             ----             -----------
        1031             de-DE            ドイツ語 (ドイツ)

    次の例を見ると、-as 演算子は、入力されたオブジェクトを .NET Framework 型に変換できない場合、
    何も返さないことがわかります。


        C:\PS> 1031 -as [System.Diagnostic.Process]
        C:\PS>
 

関連項目
    about_Operators