我目前有一个输出日志文件,有点混乱,并且增长很快。它是具有邮箱权限的大型脚本的调试输出。我基本上只想删除文件中的每一行,直到找到7天前的日期的第一次迭代为止。
到目前为止,我可以返回包含该日期的所有行
$content = Get-Content $file $lastweek = "{0:M/d/yyyy}" -f (get-date).AddDays(-7) $content | Where-Object { $_.Contains("$lastweek") }
但是我无法找出一个功能来擦除所有内容,直到第一次找到它为止。
我尝试了-replace:
$content -replace ".*$lastweek", " " | Set-Content $file -Force
但这似乎只能从包含指定字符串的每一行的开头替换。
如果您正在运行V4,则可以使用.Where()
带有' SkipUntil
'选项的array 方法:
$content.Where({ $_ -like "*$lastweek*" },'SkipUntil')