2015-09-15 161 views
1

我有字符串替換在PowerShell中的麻煩。請考慮下面的表達式:

"replaceTarget: %rep" -replace '%rep','$_' 

我希望這個表達式的結果是:

replaceTarget: $_ 

,但相反,它是

replaceTarget: replaceTarget: $rep 

我想這是因爲替換字符串'$_'已在replace功能的一些其他的意思。

我怎樣才能逃避輸入字符串,使$_可以在不被評估的傳遞嗎?

+0

的第一個字符串被擴大到'replaceTarget:無論是$代表裏面]' - 但你試圖替換文字字符串'$ rep'? –

+0

@ MathiasR.Jessen我已經編輯了這個問題來澄清意圖。 – Oliver

回答

2

你coud使用.NET替換功能是這樣的: 'replaceTarget: $rep'.replace("`$rep",'$_')

+0

謝謝,這似乎工作。我試過'[Regex] :: replace',並且有同樣的問題。 – Oliver

+0

我沒有找到合適的辦法做到這一點使用PowerShell的'-replace'運營商... –

4

嘗試這樣的:

'replaceTarget: %rep' -replace '%rep','$$_' 
+0

尼斯。$也作爲一個協商角色?永遠不要這樣做! –

+0

真是奇怪的行爲:'PS> $'測試 - > VariableIsUndefined。 'PS>「$$測試」' - > $ TESTTEST –

+1

@Kayasax在最後一種情況下$$擴展,當你進入最後一個命令。嘗試> CLS>「$$魔法」。在那裏「替換」雙$$作爲逃跑,但實際上只是一個擴大系統的規則,我找不到原始文件,但是如果我發現我會在這裏給出反饋! –