我需要一个脚本,可以从大型驱动器(600GB到1TB)收集文件夹/文件信息。 我需要的信息是:
到目前为止,我有下面的代码:
dir 'e:\' -recurse | select FullName,Length,CreationTime,LastWriteTime,LastAccessTime | Export-CSV e:\test\testit.csv -notype
是否有可能获得脚本适应,以便它可以search'如果修改date等于'xxx'天或更旧,然后输出数据到csv ..
xxx就是这个数字,即1年以上的365,或者是xxx,即2年以上的730。
也可以修改它在CSV文件上输出的列的标题吗? 谢谢
对于问题的第一部分,你可以使用
# 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