19

現時点でのコード

get-childitem c:\pstbak\*.* -include *.pst | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-3)} |

基本的に、私がやろうとしているのは、上記のフォルダー内のすべての PST ファイルのリストを、それらが 3 日以上前のものであることに基づいて取得することです。次に、結果を数えたいと思います。上記のコードはエラーにはなりませんが、ゼロの結果が返されます (フォルダーには 3 日より新しい PST ファイルが確実に存在します。

4

4 に答える 4

2

これは、Dave Sexton によって提供されたソリューションのマイナー アップデートです。多くの場合、複数のフィルターが必要になります。Filter パラメーターは 1 つの文字列のみを受け取ることができますが、-Include パラメーターは文字列配列を受け取ることができます。大きなファイル ツリーがある場合は、ファイルごとではなく、日付を 1 回だけ取得して比較することも理にかなっています。これが私の更新されたバージョンです:

$compareDate = (Get-Date).AddDays(-3)    
@(Get-ChildItem -Path c:\pstbak\*.* -Filter '*.pst','*.mdb' -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count
于 2015-10-10T11:42:39.830 に答える
1

これを前の回答にコメントとして追加したかったのですが、できません。Dave Sextonの回答を試しましたが、カウントが 1 の場合に問題が発生しました。これにより、1 つのオブジェクトが返された場合でも配列が強制されます。

([System.Object[]](gci c:\pstback\ -Filter *.pst | 
    ? { $_.LastWriteTime -gt (Get-Date).AddDays(-3)})).Count

空の場合でもゼロは返されませんが、「-lt 1」のテストは機能します。

于 2014-04-10T17:52:19.120 に答える