我正在尝试编写一个脚本,该脚本将输出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所需的输出?
答案 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