我在Powershell中编写了一个脚本,它将从过去七年中提取目录中的所有文件(这是我第一次使用Powershell)。
我正在尝试将以下脚本中的结果导出到TXT或CSV文档中。
get-childitem -Path P:\ -recurse | where-object {$_.LastWriteTime -lt (getdate).Addyears(-7)}
我应该在此脚本的末尾添加什么才能将此数据写入文件?
答案 0 :(得分:2)
首先,您的脚本正在查找超过7年的文件,而不是过去7年的文件。您需要将-lt
更改为-gt
。
get-childitem -Path P:\ -recurse| where-object {$_.LastWriteTime -gt (get-date).Addyears(-7)}
在编写脚本时,它会找到文件上次写入的日期/时间,例如2015年3月24日下午2:45。然后检查是否小于现在减去7年(在撰写本文时为12/5/2010 3:22 PM)。仅从这些年份来看,我们可以看到2015年不低于2010年,因此该文件将被排除在外。
您可以使用Out-File
或(我的偏好)Set-Content
cmdlet输出到文本文件。
get-childitem -Path P:\ -recurse| where-object {$_.LastWriteTime -gt (get-date).Addyears(-7)} | Set-Content C:\Path\To\File.txt
或者,如果您还要捕获数据或在屏幕上显示数据,则可以使用Tee-Object
cmdlet。
get-childitem -Path P:\ -recurse| where-object {$_.LastWriteTime -gt (get-date).Addyears(-7)} | Tee-Object -FilePath C:\Path\To\File.txt
如果您想要CSV文件,请使用Export-Csv
cmdlet。使用此cmdlet时,通常使用-NoTypeInformation
参数(在我的示例中缩写为-NoType
)以避免获取指定其输出的对象类型的第一行。
get-childitem -Path P:\ -recurse| where-object {$_.LastWriteTime -gt (get-date).Addyears(-7)} | Export-Csv C:\Path\To\File.csv -NoType
答案 1 :(得分:0)
get-childitem -path p:\ -recurse | where-object {$ _.lastwritetime -lt((get-date).adddyears(-7))} | export-csv c:\ temp \ test.csv