替换使用的方法Select-String不起作用

时间:2017-12-04 14:22:19

标签: powershell

我正在尝试搜索字符串,替换它然后输出文件。我相信我的语法是正确的,但无论出于何种原因,它都无效。任何人都可以发现为什么或甚至可能这样做?

$DesiredTimeoutTime = '<Settings maxTimeout="04:00:00" />'
$path = "C:\Windows\Settings.log" 

$currentTimeoutTime = Select-String -Path $path -SimpleMatch '<Settings maxTimeout=' -CaseSensitive
Write-Host $currentTimeoutTime
(Get-Content $path).Replace((Select-String -Path $path -SimpleMatch '<Settings maxTimeout="'), $DesiredTimeoutTime) | out-file $path

它找到了行和路径,但它没有保存更改。

谢谢

1 个答案:

答案 0 :(得分:3)

你过度复杂的事情。只需将-replace运算符与适当的regular expression

一起使用即可
$DesiredTimeoutTime = '04:00:00'
(Get-Content $path) -replace '(?<=<Settings maxTimeout=")[^"]*', $DesiredTimeoutTime |
    Set-Content $path

(?<=...)是一个positive lookbehind assertion,它基本上意味着&#34;寻找前面有这种模式的东西&#34;。