1

ドメイン名\ユーザー名を持つノードを置き換えようとしています。

「\」が付いているので正規表現マッチに失敗し、

無効な正規表現パターン: l8-dc\testuser2。C:\Users\testuser1.l8-dc\Desktop\RunTimeAccountChange\UserAccount-Replace.ps1:164 文字: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)

私は自分の環境で2番目のテストを頻繁に行っていますが、これは、すべて異なるドメインであるが、同じユーザー名を持つテストデッキが多数あるためです。

于 2012-08-02T16:45:54.573 に答える