[PowerShell Core 入門] 変数の使用方法

PowerShell Core PowerShell Core
PowerShell Core

変数の使用方法

PowerShell における変数は、先頭に「$」を付けて表します。

例えば、変数名を number としたい場合は、「$number」とします。

他の言語のように変数の宣言をする必要はありません(宣言をして使用することも可能です)。代入した値に合わせてデータ型が決まります。

例えば、「$number」という変数に数値の「7」を代入したい場合は、以下のようにします。

$number = 7

代入した値を確認する場合は、変数名を入力して [Enter]キーを押します。

$number [Enter]

 

今度は、Get-Date(日付データを取得するコマンドレット)の結果を $dt に代入してみましょう。

$dt = Get-Date

実行結果を確認すると以下のようになります。

PS> $dt [Enter]
2019年12月4日 水曜日 6:57:46

変数に代入されたのは Get-Date が返すオブジェクトですので、以下のようにして年の値や月の値を取り出したりすることもできます。

PS> $dt.Year[Enter]
2019
PS> $dt.Month[Enter]
12

変数のデータ型の確認方法

すでに説明をした通り、変数は代入時にデータ型が決まります。

変数のデータ型を調べたい場合が、変数名の後ろに「.GetType()」を付けて実行をします。

例えば、変数  $number に「7」を代入後、変数のデータ型を調べるには以下のようにします。

PS > $number = 7
PS > $number.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType

実行結果の Name 列を見ると、$number のデータ型は「Int32」であることがわかります。

 

続いて、Get-Date(日付けデータを取得するコマンドレット)の結果を代入した変数 $dt のデータ型を確認してみましょう。

以下のように DateTime 型であることがわかります。

PS > $dt = Get-Date
PS > $dt.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     DateTime                                 System.ValueType

 

次に、上記の $dt に文字列「Hello」を代入して、データ型を確認してみましょう。以下のように String 型になっています。このように最後に代入されたデータの型に変わりますので注意しましょう。

PS > $dt = "Hello"
PS > $dt.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

データ型を強制する

データ型は、最後に代入した値の型に変更されることを説明しました。

一貫してデータ型を変更されないようにするには、「[データ型]変数名 = 値」のようにします。

たとえば $msg を String 型にしたい場合は以下のようにします。

PS > [String]$msg = "Hello"
PS > $msg.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

上記の変数に数値の3 を代入したらどうなるのかを確認してみましょう。

代入をすることはできますが、データ型は String 型のまま変わることはありません。

PS > $msg = 3
PS > $msg.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

自動変数の使用方法

PowerShell には、自動で値が設定されている自動変数と呼ばれるものがあります。

自動変数は「変数」ですが、ユーザが値を変更することはできません。

変数を確認するコマンドレットに Get-Variable があります。

PowerShell 起動直後に Get-Variable を実行することで、自動変数を確認することができます。

※ユーザが使用している変数がある場合には、それらも表示されます。

 

コメント

タイトルとURLをコピーしました