Powershell,尝试仅输出目录上的路径和lastwritetime

时间:2009-11-05 18:00:44

标签: powershell

我正在尝试编写一个脚本,该脚本将输出90天内未更改的任何目录。我希望脚本显示整个路径名和lastwritetime。我写的脚本只显示路径名,但不显示lastwritetime。以下是剧本。

Get-ChildItem | Where {$_.mode -match "d"} | Get-Acl | 
    Format-Table @{Label="Path";Expression={Convert-Path $_.Path}},lastwritetime

当我运行此脚本时,我得到以下输出:

Path                                                        lastwritetime
----                                                        ----------
C:\69a0b021087f270e1f5c
C:\7ae3c67c5753d5a4599b1a
C:\cf
C:\compaq
C:\CPQSYSTEM
C:\Documents and Settings
C:\downloads

我发现get-acl命令没有lastwritetime作为成员。那么如何才能获得路径和lastwritetime所需的输出?

1 个答案:

答案 0 :(得分:6)

您不需要使用Get-Acl和perf来使用$ _.PSIsContainer而不是在Mode属性上使用正则表达式匹配。试试这个:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Format-Table FullName,LastWriteTime -auto

您可能还想使用-Force列出隐藏/系统目录。要将此数据输出到文件,您有以下几种选择:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Select LastWriteTime,FullName | Export-Csv foo.txt

如果您对CSV格式不感兴趣,请尝试:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Foreach { "{0,23} {1}" -f $_.LastWriteTime,$_.FullName} > foo.txt

还可以尝试使用Get-Member查看文件和文件中的属性。 dirs例如:

Get-ChildItem $Home | Get-Member

要查看所有值,请执行以下操作:

Get-ChildItem $Home | Format-List * -force