変数は値のクリアで、変数自体が削除されるわけではない。
変数自体を削除するには、Remove-Variableを使う。
#変数の設定 Set-Variable -Name a -Value "aaa" $b = "bbb" New-Variable -Name c -Value "ccc" Write-Warning "変数a,b,cを設定しました" ; sleep 2 Write-Host ("変数a={0}" -f $a) Write-Host ("変数b={0}" -f $b) Write-Host ("変数c={0}" -f $c) #変数のクリア Clear-Item variable:a Clear-Variable b $c = $null Write-Warning "変数a,b,cをクリアしました" ; sleep 2 Write-Host ("変数a={0}" -f $(if($a -eq $null){"NULL"})) Write-Host ("変数b={0}" -f $(if($b -eq $null) {"NULL"})) Write-Host ("変数c={0}" -f $(if($c -eq $null) {"NULL"})) #変数の削除 Remove-Variable a , b ,c Write-Warning "変数a,b,cを削除しました" ; sleep 2 Write-Warning "変数aの表示(エラーになる)" ; sleep 2 Get-Variable a #エイリアスの設定 New-Alias -Name np -Value c:\windows\notepad.exe Set-Alias -Name np2 -Value c:\windows\notepad.exe Write-Warning "エイリアスを設定しました" ; sleep 2 #エイリアスの実行 Write-Warning "メモ帳が開くので閉じる" ; sleep 2 "Alias:np = C:\Windows\Notepad.exe" > a.txt np a.txt | Out-Null "Alias:np2 = C:\Windows\Notepad.exe" > b.txt np2 b.txt | Out-Null #エイリアスの削除 Clear-Item -Path Alias:np Remove-Item -Path Alias:np2 Write-Warning "エイリアスを削除しました" ; sleep 2 Write-Warning "Alias np の実行、存在しないのでエラーになる" ; sleep 2 np a.txt del a.txt , b.txt -Verbose |
Set-VariableとNew-Variable、Set-AliasとNew-Aliasの違いはNewのほうは既に存在するとエラーになる。
Write-Warningは手軽に黄色表示ができるので使っているだけ。Write-Hostでも色の指定はできる。
Write-Host ("変数a={0}" -f $(if($a -eq $null){"NULL"})) |
ここではifで条件判定した結果を渡したいので、
$( ) の形式(部分式演算子)を使っている。
これはPowershellに対して式の評価を強制するもので、以下のように文字列の中などでも使える。
PS E:\temp\test> "(dir)" (dir) PS E:\temp\test> "$(dir)" a.txt b.txt |
dirの結果表示が通常と違っているが、部分式演算子ではコマンド出力がOut-Stringされないようだ。
(コマンドラインから入力された場合は自動的に Out-Stringされる。)
自分でOut-Stringしてあげると通常の形式で一覧表示される。
PS E:\temp\test> "$(dir | Out-String)" ディレクトリ: E:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2010/06/17 22:43 8 a.txt -a--- 2010/06/17 22:43 8 b.txt |
エイリアスを使ってメモ帳を起動している部分では、閉じられるのを待つためにOut-Nullにパイプしている。
np a.txt | Out-Null |
最後にファイルを削除している部分では、
del a.txt , b.txt -Verbose |
ほとんどの動作系コマンドレットでは、このスイッチが指定できるようだ。
0 件のコメント:
コメントを投稿