24時間以内に変更が加えられたファイルの一覧を出力するPowerShellスクリプト

毎日のバックアップファイルの増分が巨大になっている場合など,最近変更されたファイルの一覧を,ファイルサイズと共にPowerShellで出力したい場合があります。

また,良く知らないアプリケーションのトラブルシューティングをする場合,最近変更が加えられたであろうログファイルの一覧などを見つけたいかも知れません。

そのような時に使えるPowerShellコマンドは,Get-ChildItemです。


Get-ChildItemコマンドで最近変更されたファイルの一覧を出力する方法


例えば,Dドライブ全体を検索範囲とし,24時間以内に変更が加えられたファイルの一覧を出力するコマンドは以下の通りです。

$RootPath = 'D:\'
$OutputFile = 'C:\Path\FileList.csv'
Get-ChildItem -Path $RootPath -Recurse -File | Where-Object {$_.LastWriteTime -gt (Get-Date).AddHours(-24)} | Select Name, DirectoryName, LastWriteTime, @{Name="KBytes";Expression={$_.Length / 1Kb}} | Export-Csv $OutputFile -NoTypeInformation


また,過去7日間に変更があったファイルをリストアップしたい場合には,AddHoursをAddDaysに置き換えて次のようなPowerShellスクリプトになります。

$RootPath = 'D:\'
$OutputFile = 'C:\Path\FileList.csv'
Get-ChildItem -Path $RootPath -Recurse -File | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select Name, DirectoryName, LastWriteTime, @{Name="KBytes";Expression={$_.Length / 1Kb}} | Export-Csv $OutputFile -NoTypeInformation


特定の拡張子を持つファイルだけを抽出したい場合には,-Filterオプションを付けます。

$RootPath = 'D:\'
$OutputFile = 'C:\Path\FileList.csv'
Get-ChildItem -Path $RootPath -Recurse -File -Filter *.mp4 | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select Name, DirectoryName, LastWriteTime, @{Name="KBytes";Expression={$_.Length / 1Kb}} | Export-Csv $OutputFile -NoTypeInformation


ファイルサイズをMBで出力したい場合には,ExpressionをMBに変更して,次のようなPowerShellコマンドになります。

$RootPath = 'D:\'
$OutputFile = 'C:\Path\FileList.csv'
Get-ChildItem -Path $RootPath -Recurse -File -Filter *.mp4 | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select Name, DirectoryName, LastWriteTime, @{Name="MB";Expression={$_.Length / 1MB}} | Export-Csv $OutputFile -NoTypeInformation



以上,最近変更が加えられたファイルの一覧を出力するPowerShellスクリプトでした。

コメントを残す

メールアドレスが公開されることはありません。