将powershell中的结果导出到CSV文档不起作用

时间:2017-12-05 22:38:11

标签: powershell

我在Powershell中编写了一个脚本,它将从过去七年中提取目录中的所有文件(这是我第一次使用Powershell)。

我正在尝试将以下脚本中的结果导出到TXT或CSV文档中。

get-childitem -Path P:\ -recurse | where-object {$_.LastWriteTime -lt (getdate).Addyears(-7)}

我应该在此脚本的末尾添加什么才能将此数据写入文件?

2 个答案:

答案 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