PowerShell: 変数のデータ型を確認・指定する方法
PowerShellで変数を使用する場合、 明示的にデータ型を指定しなくても自動的に判別してくれます。 ですが処理内容によってはデータ型を確認したい場合や、 明示的に型を指定したい場合もあります。
ここではPowerShellで変数のデータ型を確認する方法と、 データ型を明示的に指定する方法を紹介します。
データ型を確認する方法
データ型を確認する場合はGetTypeメソッドを使用し、 「変数.GetType()」と記述します。
次のサンプルコードでは、 変数に整数・浮動小数点数・文字列・真偽値を代入し、 それぞれの変数のデータ型をGetType()で確認しています。
$a = 2147483647 Write-Host $a.GetType() # System.Int32 $b = 2147483648 Write-Host $b.GetType() # System.Int64 $c = 3.14 Write-Host $c.GetType() # System.Double $d = "hello" Write-Host $d.GetType() # System.String $e = $true Write-Host $e.GetType() # System.Boolean
変数「$a」と「$b」を見るとわかるように、 整数の場合「2147483647」までは「Int32」(4バイト)ですが それより大きい値は「Int64」(8バイト)になります。
補足として「$null(NULL値)」が格納されている変数に対して GetTypeメソッドを使用するとエラーが発生します。
$a = $null Write-Host $a.getType() # 実行結果(エラーメッセージ) null 値の式ではメソッドを呼び出せません。
データ型を明示的に指定する方法
データ型を明示的に指定する場合は変数名の前に データ型を角括弧で囲って記述します。
書式
[データ型]$変数名 = 値
次のサンプルコードでは変数にInt32、Int64、Double、String、Boolean型を指定しています。
[Int32]$a = 10 [Int64]$b = 10 [Double]$c = 3.14 [String]$d = "hello" [Boolean]$e = $true
明示的にデータ型を指定した場合は、
指定した型と異なるデータ型の値を代入するとエラーが発生します。
例えば、数値型「Int32」を指定した変数に
文字列を代入することはできません。
[Int32]$a = 10 $a = "hello" # 実行結果(エラーメッセージ) 値 "hello" を型 "System.Int32" に変換できません。 エラー: "入力文字列の形式が正しくありません。"
(まとめ記事: PowerShell 変数)