从非常大的驱动器中提取信息的脚本

我需要一个脚本,可以从大型驱动器(600GB到1TB)收集文件夹/文件信息。 我需要的信息是:

  • 文件的全名/path
  • 文件大小
  • 创builddate
  • 修改date
  • 上次访问date

到目前为止,我有下面的代码:

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