目前的代码
get-childitem c:\pstbak\*.* -include *.pst | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-3)} |
基本上我想要做的是获取上面文件夹中所有PST文件的列表,基于它们比3天更新。然后我想算一下结果。上面的代码不会出错但会带来零结果(文件夹中肯定有PST文件比三天更新。有人有任何想法吗?
答案 0 :(得分:30)
试试这个:
(Get-ChildItem -Path c:\pstbak\*.* -Filter *.pst | ? {
$_.LastWriteTime -gt (Get-Date).AddDays(-3)
}).Count
答案 1 :(得分:14)
与之前的回复非常相似,但是来自当前目录,查看任何文件,仅查看4天之前的文件。这是我研究所需要的,上面的答案都非常有用。感谢。
Get-ChildItem -Path . -Recurse| ? {$_.LastWriteTime -gt (Get-Date).AddDays(-4)}
答案 2 :(得分:2)
这是Dave Sexton提供的解决方案的一个小更新。很多时候你需要多个过滤器。 Filter参数只能接受一个字符串,而-Include参数可以接受一个字符串数组。如果你有一个大文件树,那么只将日期与一次比较有意义,而不是每个文件。这是我的更新版本:
$compareDate = (Get-Date).AddDays(-3)
@(Get-ChildItem -Path c:\pstbak\*.* -Filter '*.pst','*.mdb' -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count
答案 3 :(得分:1)
我想将此添加为对上一个答案的评论,但我不能。我尝试了Dave Sexton的答案,但是如果计数为1则会出现问题。即使返回了一个对象,也会强制执行数组。
([System.Object[]](gci c:\pstback\ -Filter *.pst |
? { $_.LastWriteTime -gt (Get-Date).AddDays(-3)})).Count
如果为空,它仍然不返回零,但测试'-lt 1'有效。