毎日のバックアップファイルの増分が巨大になっている場合など,最近変更されたファイルの一覧を,ファイルサイズと共に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スクリプトでした。
コメント