我正在尝试替换具有domainname \ username的节点。
因为它有“\”,它在正则表达式匹配中失败,
无效的正则表达式模式:l8-dc \ testuser2。在 C:\ Users \用户testuser1.l8-DC \桌面\ RunTimeAccountChange \ UserAccount-Replace.ps1:164 焦炭:68 + $ Searchstr.Node。'#text'= $($ Searchstr.Node。'#text')-replace<<<< $ OldUserName,$ NewUserN ame + CategoryInfo:InvalidOperation:(l4-dc \ mesuser2:String)[],RuntimeException + FullyQualifiedErrorId:InvalidRegularExpression
以下行实际上失败了..
$Searchstr.Node.'#text'= $($Searchstr.Node.'#text') -replace $OldUserName,$NewUserName
如何用正则表达式匹配替换?
答案 0 :(得分:1)
我必须看到实际的正则表达式模式,但我猜你需要在它的某个地方逃避\。通过添加另一个\来做到这一点。
答案 1 :(得分:0)
试试这个:
$Searchstr.Node.'#text'= $($Searchstr.Node.'#text') -replace $($OldUserName),$($NewUserName)
如果这不起作用,您可以尝试稍微更改脚本,如下所示:
$Domain = "MyDomain"
$OldUserName = "OldUser"
$NewUserName = "NewUesr"
$Searchstr.Node.'#text'= $($Searchstr.Node.'#text') -replace $($Domain + "\" + $OldUserName),$($Domain + "\" + $NewUserName)
我在我的环境中做了很多第二个,但那是因为我们有许多测试平台,它们都是不同的域,但具有相同的用户名。