我需要一个可以从大型驱动器(600GB到1TB)收集文件夹/文件信息的脚本。我需要的信息是:
到目前为止,我有以下代码:
dir 'e:\' -recurse |
select FullName,Length,CreationTime,LastWriteTime,LastAccessTime |
Export-CSV e:\test\testit.csv -notype
是否可以调整脚本以便搜索“如果修改日期等于'xxx'天或更早,则输出数据到csv ..
xxx将是数字 - 即1年或更长的365年......或xxx将是数字 - 即730年2年或更久......
还可以修改它在CSV文件中输出的列的标题吗? 感谢
答案 0 :(得分:2)
对于问题的第一部分,您可以使用
# fixed date
Get-ChildItem c:\temp\ | ? { $_.LastWriteTime -lt [datetime]'2009-02-23' }
# variable depending on current date; it returns only items that are older than 365 days
Get-ChildItem c:\temp\ | ? { $_.LastWriteTime -lt [datetime]::Now.AddDays(-365) }
至于修改标题..我可以选择名称不同但内容相同的项目(〜重命名属性):
Select-Object @{Name='ItemName'; Expression={$_.FullName } },
@{Name='Write'; Expression={$_.LastWriteTime } },
@{Name='Access'; Expression={$_.LastAccessTime } }
请注意,有一个脚本块,您可以在其中执行任何操作。你可以,例如格式化日期{$_.LastAccessTime.ToString('yyyy-MM-dd') }
如果我把它放在一起(只有3个属性'重命名')
Get-ChildItem e:\ -rec |
? { $_.LastWriteTime -lt [datetime]::Now.AddDays(-365) } |
Select-Object @{Name='ItemName'; Expression={$_.FullName } },
@{Name='Write'; Expression={$_.LastWriteTime } },
@{Name='Access'; Expression={$_.LastAccessTime } } |
Export-Csv e:\test\testit.csv -notype