Powershell - 文件不早于

时间:2014-06-25 22:30:37

标签: search powershell time

我正在尝试制作一个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时,它会显示文件夹中包含模式的每个文件,包括比定义的小时更小的模式。

有人有解决方案吗?

提前谢谢

1 个答案:

答案 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