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 変数

PowerShell