about_Type_Operators

簡単な説明

Microsoft .NET 型を操作する演算子について説明します。

長い説明

ブール型の演算子 ( -is および -isNot ) は、オブジェクトが指定された .net 型のインスタンスであるかどうかを示します。 演算子は -is 、型がと一致する場合は TRUE 、それ以外の場合は FALSE の値を返します。 型がと一致する場合、演算子は -isNotFALSE を返します。それ以外の場合は TRUE の値を返します。

演算子は -as 、入力オブジェクトから指定された .net 型への変換を試みます。 成功した場合は、変換されたオブジェクトを返します。 失敗した場合は、を返し $null ます。 エラーは返されません。

次の表に、PowerShell の型演算子を示します。

演算子 [説明]
-is 入力時に TRUE を返します (get-date) -is [DateTime]
はのインスタンスです。 True
指定された .NET 型。
-isNot 入力時に TRUE を返します (get-date) -isNot [DateTime]
のインスタンスではありません。 False
specified.NET 型。
-as 入力をに変換します。 "5/7/07" -as [DateTime]
指定された .NET 型。 Monday, May 7, 2007 12:00:00 AM

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

<input> <operator> [.NET type]

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

<input> <operator> ".NET type"

.NET 型は、角かっこで囲んだ型名として、または system.string 用や "DateTime" などの文字列 [DateTime] として書き込むことができます。 型が system 名前空間のルートにない場合は、オブジェクトの種類の完全な名前を指定します。 "System." を省略できます。 たとえば、system.string を指定する には、、 [Diagnostics.Process] 、または "Diagnostics.Process" を入力 [System.Diagnostics.Process] します。

型演算子は、常に入力オブジェクト全体を操作します。 つまり、入力オブジェクトがコレクションである場合は、コレクションの 要素 の型ではなく、テストされる コレクション 型です。

-is/isNot 演算子

ブール 型の演算子 ( -is および -isNot ) は、入力がオブジェクトのコレクションであっても、常に ブール 値を返します。

がと同じか、または .NET 型から 派生 した型である場合 <input> 、演算子は -is を返し $True ます。

たとえば、 DirectoryInfo 型は、 filesysteminfo 型から派生します。 したがって、両方の例で True が返されます。

PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True

が比較でインターフェイスを実装し <input> ている場合、演算子は -is インターフェイスを照合することもできます。 この例では、入力は配列です。 配列は、system.string インターフェイスを実装 します。

PS> 1, 2 -is [System.Collections.IList]
True

-as 演算子

演算子は -as 、入力オブジェクトから指定された .net 型への変換を試みます。 成功した場合は、変換されたオブジェクトを返します。 失敗した場合は、を返し $null ます。 エラーは返されません。

が .NET 型 -as から 派生 した型である場合、は、 <input> 渡さ れた入力オブジェクトを変更せずに返します。 たとえば、 DirectoryInfo 型は、 filesysteminfo 型から派生します。 そのため、次の例では、オブジェクトの種類が変更されていません。

PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo

DateTime 型の変換はカルチャに依存します

型キャストとは異なり、演算子を使用し -as た型へ [DateTime] の変換は、現在のカルチャの規則に従って書式設定された文字列に対してのみ機能します。

PS> [cultureinfo]::CurrentCulture = 'fr-FR'
PS> '13/5/20' -as [datetime]

mercredi 13 mai 2020 00:00:00

PS> '05/13/20' -as [datetime]
PS> [datetime]'05/13/20'

mercredi 13 mai 2020 00:00:00

PS> [datetime]'13/05/20'
InvalidArgument: Cannot convert value "13/05/20" to type "System.DateTime".
Error: "String '13/05/20' was not recognized as a valid DateTime."

オブジェクトの .NET 型を検索するには、コマンドレットを使用 Get-Member します。 または、すべてのオブジェクトの GetType メソッドを、このメソッドの FullName プロパティと共に使用します。 たとえば、次のステートメントは、コマンドの Get-Culture 戻り値の型を取得します。

PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo

次の例では、型演算子の使用方法を示します。

PS> 32 -is [Float]
False

PS> 32 -is "int"
True

PS> (get-date) -is [DateTime]
True

PS> "12/31/2007" -is [DateTime]
False

PS> "12/31/2007" -is [String]
True

PS> (get-process PowerShell)[0] -is [System.Diagnostics.Process]
True

PS> (get-command get-member) -is [System.Management.Automation.CmdletInfo]
True

次の例は、入力がオブジェクトのコレクションである場合、一致する型がコレクションの .NET 型であり、コレクション内の個々のオブジェクトの型ではないことを示しています。

この例では、コマンドレットと Get-UICulture コマンドレットはどちらも Get-Culture 、system.string オブジェクトを返しますが、これら のオブジェクトの コレクションは system.object 配列です。

PS> (get-culture) -is [System.Globalization.CultureInfo]
True

PS> (get-uiculture) -is [System.Globalization.CultureInfo]
True

PS> (get-culture), (get-uiculture) -is [System.Globalization.CultureInfo]
False

PS> (get-culture), (get-uiculture) -is [Array]
True

PS> (get-culture), (get-uiculture) | foreach {
  $_ -is [System.Globalization.CultureInfo])
}
True
True

PS> (get-culture), (get-uiculture) -is [Object]
True

次の例は、演算子の -as 使用方法を示しています。

PS> "12/31/07" -is [DateTime]
False

PS> "12/31/07" -as [DateTime]
Monday, December 31, 2007 12:00:00 AM

PS> $date = "12/31/07" -as [DateTime]

C:\PS>$a -is [DateTime]
True

PS> 1031 -as [System.Globalization.CultureInfo]

LCID      Name      DisplayName
----      ----      -----------
1031      de-DE     German (Germany)

次の例は、演算子が -as 入力オブジェクトを .net 型に変換できない場合にを返す $null ことを示しています。

PS> 1031 -as [System.Diagnostics.Process]
PS>

関連項目

about_Operators