如何使用PowerShell替换xml中的域\用户名?

时间:2012-08-02 14:30:34

标签: regex powershell powershell-v2.0

我正在尝试替换具有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

如何用正则表达式匹配替换?

2 个答案:

答案 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)

我在我的环境中做了很多第二个,但那是因为我们有许多测试平台,它们都是不同的域,但具有相同的用户名。