2009-11-05 4 views
2

90 일 동안 변경되지 않은 디렉토리를 출력하는 스크립트를 작성하려고합니다. 내가 스크립트를 에만 전체 경로 이름과 lastwritetime 표시 싶어요. 필자가 작성한 스크립트는 경로명을 표시하지만 lastwritetime은 표시하지 않습니다. 아래는 스크립트입니다. 나는이 스크립트를 실행하면Powershell, 디렉토리에만 경로 및 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에 필요한 출력을 얻을 수 있습니까?

답변

6

Mode 속성에서 정규식 일치를 사용하는 대신 Get-Acl을 사용하고 perf $ _. PSIsContainer를 사용할 필요가 없습니다. 대신 다음을 시도해보십시오 :

숨김/시스템 디렉토리를 표시하려면 -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 
+0

하위 항목 (파일 및 디렉터리)에 대한 LastWriteTime 변경은 이러한 항목이 포함 된 디렉터리의 LastWriteTime에만 적용됩니다. –

+0

Get-ChildItem에 -Recurse 매개 변수를 추가하면 해당 문제가 해결됩니다. –

+0

예 게시 한 후 -recurse 옵션에 대해 알아 냈습니다. 하지만 한 가지 더 질문하면 머리카락에서 벗어날 것입니다. 포맷 테이블에도 자동 옵션이 ​​있습니다. 데이터를 파일에 저장하면 lastwritetime 열이 삭제됩니다. 또한 wrap 옵션을 사용하면 출력이 다소 엉망이됩니다. format-table은 자동으로 화면의 열 너비를 가져 와서 파일에 넣는 것입니다. ft 명령을 사용하여 사용자 정의 열 너비를 만들 수 있습니까? –

관련 문제