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

Regex 如何使用powershell替换xml中的域\用户名?,regex,powershell,powershell-2.0,Regex,Powershell,Powershell 2.0,我正在尝试替换具有domainname\username的节点 因为它有“\”,所以在正则表达式匹配中失败 无效的正则表达式模式:l8 dc\testuser2。在 C:\Users\testuser1.l8 dc\Desktop\RunTimeAccountChange\UserAccount Replace.ps1:164 字符:68 +$Searchstr.Node.#text'=$($Searchstr.Node.#text')-替换我必须查看实际的正则表达式模式才能确定,但我猜您需要在

我正在尝试替换具有domainname\username的节点

因为它有“\”,所以在正则表达式匹配中失败

无效的正则表达式模式:l8 dc\testuser2。在 C:\Users\testuser1.l8 dc\Desktop\RunTimeAccountChange\UserAccount Replace.ps1:164 字符:68
+$Searchstr.Node.#text'=$($Searchstr.Node.#text')-替换我必须查看实际的正则表达式模式才能确定,但我猜您需要在其中的某个地方转义\。要做到这一点,请向其中添加另一个\。

我必须查看实际的正则表达式模式才能确定,但我猜您需要在其中的某个地方转义\。通过向其添加另一个\来执行此操作。

尝试以下操作:

$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)
我经常在我的环境中进行第二个测试,但这是因为我们有许多测试平台,它们都是不同的域,但在不同的域中具有相同的用户名

试试这个:

$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)

我经常在我的环境中进行第二个测试,但这是因为我们有许多测试平台,它们都是不同的域,但在不同的域中具有相同的用户名

如果正则表达式失败,您不认为将正则表达式添加到您的问题中可能是明智的吗?如果你不让我们知道它在哪里坏了,那么很难帮助你修复它。如果正则表达式失败了,你不认为在你的问题中添加正则表达式是明智的吗?如果你不让我们知道它坏在哪里,就很难帮你修好它。