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

时间:2010-02-23 10:00:55

标签: windows powershell scripting

我需要一个可以从大型驱动器(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文件中输出的列的标题吗? 感谢

1 个答案:

答案 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
相关问题