Powershell:在特定的创建时间范围内递归搜索驱动器或目录中的文件类型

Powershell:在特定的创建时间范围内递归搜索驱动器或目录中的文件类型,powershell,recursion,file-io,get-childitem,Powershell,Recursion,File Io,Get Childitem,我正试图将Powershell整合到我的日常工作流程中,这样我就可以从桌面支持人员提升到系统管理员。我在帮助同事时遇到的一个问题是如何搜索保存在未知目录中丢失或遗忘的文件。我想到的管道是: dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Out-File pdfs.txt 这段代码的执行方式正是我想要的,但现在我想扩展这个命令并使其更高效。尤其是因为我的公司有客户的文件管理非常混乱 我想用这个管道做什么

我正试图将Powershell整合到我的日常工作流程中,这样我就可以从桌面支持人员提升到系统管理员。我在帮助同事时遇到的一个问题是如何搜索保存在未知目录中丢失或遗忘的文件。我想到的管道是:

dir C:\ -Recurse -Filter *.pdf -ErrorAction SilentlyContinue -Force | Out-File pdfs.txt
这段代码的执行方式正是我想要的,但现在我想扩展这个命令并使其更高效。尤其是因为我的公司有客户的文件管理非常混乱

我想用这个管道做什么:

  • 递归搜索在指定时间范围内创建的特定文件类型。假设此搜索中允许的最旧文件是两天前的文件。
    • 将文件保存到文本文件,其中的列包含文件名、全名(路径),并按创建时间降序排序
到目前为止,我所拥有的:

dirc:\-Recurse-Filter*.pdf-ErrorAction SilentlyContinue-Force |选择对象名称,全名|输出文件*pdfs.txt


我真的需要关于如何在创建文件时创建过滤器的帮助。我想我需要在dir管道之后和Select对象管道之前使用Where-Object cmdlet,但我不知道如何设置它。这就是我写的:
Where Object{$\.CreationTime您走对了方向,要从特定的文件创建日期范围获取文件,您可以将dir命令结果通过管道发送到:

Where-Object {$_.CreationTime -ge "06/20/2017" -and $_.CreationTime -le "06/22/2017"}
如果您想要更具可重复性的内容,而不必每次对日期进行硬编码,只需搜索2天前的文件,则可以设置变量:

$today = (Get-Date)
$daysago = (Get-Date).AddDays(-2)
Where-Object {$_.CreationTime -ge $daysago -and $_.CreationTime -le $today}
然后插入变量:

$today = (Get-Date)
$daysago = (Get-Date).AddDays(-2)
Where-Object {$_.CreationTime -ge $daysago -and $_.CreationTime -le $today}
我不在我的Windows PC附近测试,但我认为它应该可以工作!

看看这是否有帮助

dir c:\ -Recurse -Filter *.ps1 -ErrorAction SilentlyContinue -Force | select LastWriteTime,Name | Where-Object {$_.LastWriteTime -ge [DateTime]::Now.AddDays(-2) } | Out-File Temp.txt