2010年6月17日木曜日

◆項目の削除(Clear-Item)

Clear-Itemコマンドレットは「変数、エイリアス、レジストリーエントリー」を削除することができる。
変数は値のクリアで、変数自体が削除されるわけではない。
変数自体を削除するには、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
20100617230319
Set-VariableとNew-Variable、Set-AliasとNew-Aliasの違いはNewのほうは既に存在するとエラーになる。
Write-Warningは手軽に黄色表示ができるので使っているだけ。Write-Hostでも色の指定はできる。
Write-Host ("変数a={0}" -f $(if($a -eq $null){"NULL"}))
通常フォーマット演算子( –f )の右にはオブジェクトが来る。
ここでは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
-Verboseスイッチを指定して動作の詳細情報を表示させている。
ほとんどの動作系コマンドレットでは、このスイッチが指定できるようだ。

0 件のコメント:

コメントを投稿