2015-11-03 93 views
0

我想知道是否有人可以添加到這個問題我有反斜槓?PowerShell 2.0字符串字符問題和Get-Content替換

不幸的是,我目前的工作環境是在PowerShell 2.0上,誰知道他們什麼時候會移動到4.0。所以當我在PowerShell 4.0中的其他地方工作時,有些東西是寫在2.0中不起作用的,

在PowerShell 4.0中,這將毫無問題地工作。但不在2.0。

(GC C:\ TEMP \ Test.reg).Replace( 「HKEY_USERS \ $ PROFILENAME」, 「HKEY_CURRENT_USER」)| SC C:\ TEMP \ Test.reg

所以我想這一點,書寫時這在2.0,我沒有運氣。

(GC C:\ TEMP \ Test.reg 「)的foreach {$ _ -replace 」HKEY_USERS \ $ PROFILENAME「, 」HKEY_CURRENT_USER「} | SC C:\ TEMP \ Test.reg」)

這隻要我沒有「\」就可以工作。該腳本將其視爲system.object,不會觸及反斜槓。有沒有辦法只有「HKEY_CURRENT_USER」

這是令人沮喪的,以取代「HKEY_USERS \ $ PROFILENAME」 .....

+0

沒關係,我想出了一個辦法。我不得不使用兩個反斜槓,然後它的工作。對不起大家。 (gc C:\ Temp \ Test.reg)foreach {$ _ -replace「HKEY_USERS \\ $ PROFILENAME」,「HKEY_CURRENT_USER」} | sc C:\ Temp \ Test.reg「) – TheInfamousOne

回答

0

反斜線在PowerShell中的正則表達式的轉義字符。在正則表達式部分使用雙反斜槓。

(gc C:\Temp\Test.reg).Replace("HKEY_USERS\\$PROFILENAME", "HKEY_CURRENT_USER")|sc C:\Temp\Test.reg

+1

謝謝Xalorous,重新正確。 – TheInfamousOne

+0

@TheInfamousOne,不客氣。 – Xalorous