1

我正在尝试替换具有域名\用户名的节点。

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

无效的正则表达式模式:l8-dc\testuser2。在 C:\Users\testuser1.l8-dc\Desktop\RunTimeAccountChange\UserAccount-Replace.ps1:164 char:68 + $Searchstr.Node.'#text'= $($Searchstr.Node.'#text') -替换 <<<< $OldUserName,$NewUserName + CategoryInfo : InvalidOperation: (l4-dc\mesuser2:String) [], RuntimeException + FullyQualifiedErrorId : InvalidRegularExpression

以下行实际上失败了..

$Searchstr.Node.'#text'= $($Searchstr.Node.'#text') -replace $OldUserName,$NewUserName

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

4

2 回答 2

1

我必须看到实际的正则表达式模式才能确定,但​​我猜你需要在其中的某个地方转义一个 \ 。通过添加另一个 \ 来做到这一点。

于 2012-08-02T14:34:31.540 回答
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)

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

于 2012-08-02T16:45:54.573 回答