我正在尝试搜索字符串,替换它然后输出文件。我相信我的语法是正确的,但无论出于何种原因,它都无效。任何人都可以发现为什么或甚至可能这样做?
$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
它找到了行和路径,但它没有保存更改。
谢谢
答案 0 :(得分:3)
你过度复杂的事情。只需将-replace
运算符与适当的regular expression:
$DesiredTimeoutTime = '04:00:00'
(Get-Content $path) -replace '(?<=<Settings maxTimeout=")[^"]*', $DesiredTimeoutTime |
Set-Content $path
(?<=...)
是一个positive lookbehind assertion,它基本上意味着&#34;寻找前面有这种模式的东西&#34;。