Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换powershell中不带';它前后没有空格_Powershell_Powershell 2.0_Powershell 3.0_Powershell 4.0 - Fatal编程技术网

如何替换powershell中不带';它前后没有空格

如何替换powershell中不带';它前后没有空格,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我们每3个月执行一次密码更改活动。我们有多个web.config文件,其中包含这些硬编码的密码 我们需要在每次更新时手动替换这些文件中的密码 我尝试使用powershell的replace命令检查它是否工作 但是字符串没有被替换,因为密码前后没有空格。写入这些密码的行类似于 value="blah blah blah" password="Old@password!" 我尝试运行的命令是 ((Get-Content -path C:\web.config) -replace 'Old@pass

我们每3个月执行一次密码更改活动。我们有多个web.config文件,其中包含这些硬编码的密码

我们需要在每次更新时手动替换这些文件中的密码

我尝试使用powershell的replace命令检查它是否工作

但是字符串没有被替换,因为密码前后没有空格。写入这些密码的行类似于

value="blah blah blah" password="Old@password!"
我尝试运行的命令是

((Get-Content -path C:\web.config) -replace 'Old@password!','New@Password!') | Set-Content -Path C:\web.config
我应该怎么做才能在我的web.config文件的下面一行结束呢

value="blah blah blah" password="New@Password!"

你为什么不把整条线换掉呢?这似乎更简单。。。[咧嘴笑]@Lee_Dailey-我不明白为什么它不起作用?这是有效的,是等效的,不是吗<代码>'Value=“blah blah blah”密码=”Old@password!“'-替换'Old@password!','New@Password!'因为它显然无法足够频繁地重复:。PowerShell附带了一个适当的XML解析器。使用它。@LievenKeersmaekers-如果没有看到真实的示例,我无法告诉您代码失败的原因。但是,如果这一行只是一行文本,那么就很容易识别和替换整行,而不需要正则表达式。只需加载
Get Content
检查行首文本,然后用新行替换整行。除了Ansgars提示之外,请记住
-replace
操作符(不是命令)是基于正则表达式的。如果旧密码包含任何被解释为RegEx
^$()[]{}
的字符,则必须手动或使用
-replace[RegEx]::escape('Old@password!'),'New@Password!'