如何使用PowerShell过滤器根据时间区分文件?

日期: 2013-03-03 作者:Don Jones翻译:杨旭 来源:TechTarget中国 英文

IT管理员们最常见的一个问题就是如何使用Windows PowerShell过滤器依据时间找到目标对象。经常以这种形式出现“我需要找到某个日期之前的所有文件。”   第一步就是确定日期:   $date = (Get-Date).AddDays(-90)   括号里面的命令会得到当前日期。AddDays()方法产生日期对象,括号里的-90会得到90天之前的日期。

这个方法可以计算闰年、长度不同的与以及所有其他变量,其总是返回一个准确的日期。   在PowerShell v3中,你可以使用Get-ChildItem检索文件列表,使用–recurse包含子文件,使用–file(PowerShell ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

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天之前的那些文件。

作者

Don Jones
Don Jones

投稿作者

相关推荐