PowerShell: データ型変換 文字列⇔数値、日付⇔文字列など

PowerShellでデータ型を変換する場合は[]角括弧を使って 「[変換したいデータ型」変換対象」と記述します。
例えば文字列型に変換する場合は

[string]変換対象

数値型(Int32型)に変換する場合は

[int]変換対象

と記述します。
では具体的に見ていきます。

文字列を数値型に変換

[int]〇〇で数値型(Int32型)に変換します。

$s = "10"
$s.GetType().Name  # String

# 数値型に変換
$n = [int]$s
$n.GetType().Name  # Int32

数値型を文字列型に変換

[string]〇〇で文字列型に変換します。

$n = 10
$n.GetType().Name  # Int32

# 文字列型に変換
$s = [string]$n
$s.gettype().Name  # String

文字列をDateTime型(日付型)に変換

[datetime]〇〇でDateTime型に変換します。

$s = "2020/1/1"
$s                 # 2020/1/1
$s.GetType().Name  # String

# DateTime型に変換
$d = [datetime]$s
$d                 # 2020年1月1日 0:00:00
$d.GetType().Name  # DateTime

DateTime型を文字列型に変換

[string]〇〇で文字列型に変換します。

$d = Get-Date
$d                 # 2022年3月5日 11:19:34
$d.GetType().Name  # DateTime

# 文字列型に変換
$s = [string]$d
$s                 # 03/05/2022 11:19:34
$s.GetType().Name  # String

double型(浮動小数点数)をint型(整数)に変換

[int]〇〇で整数型に変換しますが、 小数点部分を四捨五入した値となります。
以下のコードで「$f = 3.4」の場合、 $nの値は「3」となります。

$f = 3.5           
$f.GetType().Name  # Double

$n = [int]$f
$n                 # 4
$n.GetType().Name  # Int32

int型(整数)をdouble型(浮動小数点数)に変換

[double]〇〇でdouble型に変換します。

$n = 10
$n.GetType().Name  # Int32

$f = [double]$n
$f                 # 10
$f.GetType().Name  # Double

変換できない場合

型変換を行う場合、 指定したデータ内容によっては変換できあい場合があります。 その場合はエラーが発生します。

次のコードでは文字列"abc"を数値型に変換しようとして エラーが発生しています。

$n = [int]"abc"


# 実行結果(エラー)

Cannot convert value "abc" to type "System.Int32".
Error: "Input string was not in a correct format."

(まとめ記事: PowerShell 変数

PowerShell
PR