Doserv 发表于:13年08月30日 10:00 [翻译] DOIT.com.cn
IT管理员们最常见的一个问题就是如何使用Windows PowerShell过滤器依据时间找到目标对象。经常以这种形式出现“我需要找到某个日期之前的所有文件。”
第一步就是确定日期:
$date = (Get-Date).AddDays(-90)
括号里面的命令会得到当前日期。AddDays()方法产生日期对象,括号里的-90会得到90天之前的日期。这个方法可以计算闰年、长度不同的与以及所有其他变量,其总是返回一个准确的日期。
在PowerShell v3中,你可以使用Get-ChildItem检索文件列表,使用–recurse包含子文件,使用–file(PowerShell 3中的新参数)返回文件。
Get-ChildItem –Path C:\Logs\ -Recurse –File
Where-Object –Filter { $PSItem.LastAccessTime –lt $date }
这些文件对象具有各种各样的与日期有关的属性,比如LastAccessTime。简单的过滤掉:
Get-ChildItem –Path C:\Logs\ -Recurse –File |
Where-Object –Filter { $PSItem.LastAccessTime –lt $date }
注意,在PowerShell 2中,必须将$PSItem替换为$_。还需要填补2中缺少的–File参数。
Get-ChildItem –Path C:\Logs\ -Recurse |
Where-Object –Filter { -Not ($_.PsIsContainer) } |
Where-Object –Filter { $_.LastAccessTime –lt $date }
不管怎样,这些命令的输出结果都是LastAccessTime是90天之前的那些文件。