2011年12月9日金曜日

POWERSHELL 文字列エスケープ&置換

置換文字列にドル記号($)が入ると、-replace を普通に使ってうまく置換できなかった。
PS C:\doc\test> $STR1="My name is $[NAME]"
PS C:\doc\test> $STR2=$STR1 -replace "`$[NAME]","TOM"
PS C:\doc\test> $STR2
My name is $[NAME]

POWRSHELLのエスケープ符号(`)は効かない.か。。
  いろいろ検索してみると、[regex]::Escape メッソドを使う方法を見つかった
PS C:\doc\test> $STR2=$STR1 -replace [regex]::Escape("$[NAME]"),"TOM" PS C:\doc\test> $STR2 My name is TOM

で[regex]::Escapeメッソドは何をしたのかを見てみると、
PS C:\doc\test> [regex]::Escape("$[NAME]")
\$\[NAME]