亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

【powershell】 変数に関するコマンドレット

1.品揃え

  1. New-Variable
  2. Set-Variable
  3. Get-Variable
  4. Clear-Variable
  5. Remove-Variable

 
 

 
 
 

2.検証

1) New-Variable :変数の作成

新しい変数を作成。

> New-Variable a

宣言と同時に初期化するなら以下の通り。

> New-Variable a -Value 12345
> $a
12345

たぶん、上記はもっと簡単な記法があるから覚えなくていい。 define的に定数宣言(削除できない)する方法。

> New-Variable def_max_length -Value 256 -Option Constant
> Remove-Variable def_max_length    <-削除してみた
Remove-Variable : 変数 def_max_length は定数または読み取り専用であるため、削除できません。変数が読み取り専用である場合は、Force オプションを指定して操作を再試行してください。
発生場所 行:1 文字:1
+ Remove-Variable def_max_length
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (def_max_length:String) [Remove-Variable], SessionStateUnauthoriz 
   edAccessException
    + FullyQualifiedErrorId : VariableNotRemovable,Microsoft.PowerShell.Commands.RemoveVariableCommand

-Option Constant の部分を-Option ReadOnly だと、読取専用だが削除可能。そして-Forceで値の変更は可能。ちょっと中途半端なオプション。

2) Set-Variable : 変数に値を設定

値を設定。変数がなければ、作成したうえで設定してくれる。

> New-Variable -Name aa -Value "This is a pen." -Option ReadOnly
> $aa
This is a pen.

> Set-Variable -Name aa -Value "This is not a pen." -Force
> $aa
This is not a pen.

→-Forceオプションをつければ、READONLY変数も強制設定できる。
→READONLYでなければ、-Forceは不要。

> Set-Variable -Name bb -Value "This is a pen."
> $bb
This is a pen.
→変数がなければ、作成したうえで設定してくれる。

3) Get-Variable : 変数の値を取得

変数を探したり、変数に格納された値を参照する。

> $a = "hoge"
> $aa = "hoge hoge"

こんな風に変数を準備した。

では、確認していこう。

> Get-Variable a ・・・変数aを参照

Name                           Value                                                                                                          
----                           -----                                                                                                          
a                              hoge                                                                                                           

> Get-Variable a* ・・・aで始まる変数を探して列挙

Name                           Value                                                                                                          
----                           -----                                                                                                          
a                              hoge                                                                                                           
aa                             hoge hoge                                                                                                      
args                           {}                                                                                                             

> Get-Variable -include a* -ValueOnly ・・・値のみを参照
hoge
hoge hoge

> Get-Variable -include a* | Select-Object Name ・・・Nameプロパティのみ選択

Name
----
a   
aa  
args

4) Clear-Variable : 変数を初期化

リファレンスによると変数の値はNULLにセットされるらしい。変数自体は削除されることなく、器は残ったままで中身が空っぽになる。

> $a = "hogehoge"

> $a
hogehoge

> Clear-Variable a

> Get-Variable a ・・・変数を閲覧

Name                           Value                                                                                                          
----                           -----                                                                                                          
a                                                                                                                                             

> $a -eq $null ・・・NULLがセットされているか確認
True

5) Remove-Variable : 変数を削除

変数が削除される。器ごと削除されるので、以降、同じ変数名で作成しても別物として扱われる。

> $a ="hogehoge"

> $a
hogehoge

> Remove-Variable a ・・・変数を削除

> Get-Variable a ・・・変数を閲覧 → 変数自体が無くなっているため、参照自体がエラーとなる
Get-Variable : 名前 'a' の変数が見つかりません。
発生場所 行:1 文字:1
+ Get-Variable a
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (a:String) [Get-Variable], ItemNotFoundException
    + FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.GetVariableCommand

 ```