2015-11-03 178 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