2013年6月30日日曜日

Powershellにて[角括弧]をエスケープする方法

ファイル名やHyper-Vの仮想マシン名では角括弧[]が使用出来ます。
ところが、PowerShellでは角括弧[]は正規表現で使用されるため、ファイル名や仮想マシン名で角括弧が使用されている時はそれをエスケープする必要があります。

ファイル名やフォルダ名を検索するGet-ChildItemでは-LiteralPathスイッチパラメータを使って逃げることができます。


PS C:\temp> Get-ChildItem -LiteralPath [test].txt





    ディレクトリ: C:\temp





Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---        2013/06/30     22:31          0 [test].txt



ところが、Hyper-Vの仮想マシンを取得するGet-VMだと-LiteralPathスイッチはありません。
この場合`(アクサングラーブ、シフトを押しながら@)を2つ重ねてダブルクオーテーションで囲む必要があります。

PS C:\temp> Get-VM "``[Project1``]Win8"



Name           State CPUUsage(%) MemoryAssigned(M) Uptime   Status

----           ----- ----------- ----------------- ------   ------

[Project1]Win8 Off   0           0                 00:00:00 正常稼働中


正直面倒くさいので仮想マシン名は角括弧は使わないほうがいいでしょう。

0 件のコメント:

コメントを投稿