我正在尝试制作一个Powershell脚本,报告是否有一个不超过x小时的文件,其中包含一些字符串模式。我做了这个:
Get-ChildItem C:\Folder -recurse | Select-String -pattern "err" | group path | select name | Where {$_.LastWriteTime -gt (Get-Date).AddHours(-12)}
问题是应该只选择小于x小时的文件的代码的最后部分不起作用 - 显示没有文件。当我将-gt更改为-lt时,它会显示文件夹中包含模式的每个文件,包括比定义的小时更小的模式。
有人有解决方案吗?
提前谢谢
答案 0 :(得分:2)
您的管道输入错误。您正在将一组字符串汇总到Group-Object
,它将不同的集合管道传输到Select-Object
等。您对Where-Object
的调用正在接收Select-Object
的输出,这是一个收集PSCustomObject
s。
你想要的是将文件对象本身传递给Where-Object
,然后将那些文件对象传递给管道:
Get-ChildItem C:\Folder -recurse |
Where {$_.LastWriteTime -gt (Get-Date).AddHours(-12)} |
Select-String -pattern "err" | group path | select name