[登録されているタグ]

[記事公開日]2025/12/18

PowerShellで古いファイルを削除する|Where-Object + Remove-Item の実用例

📝 はじめに

PowerShellでログやバックアップを運用していると、
「一定期間より古いファイルだけ削除したい」
「容量を圧迫している昔のファイルを整理したい」
「手作業で日付を見ながら削除するのは大変」
と感じることはありませんか?

そんなときに役立つのが、
Where-Object
Remove-Item を組み合わせた
古いファイル削除の実用テクニックです。

こんな場面で便利

  • ログファイルの世代管理
  • バックアップフォルダの定期整理
  • 一時ファイル・作業ファイルのクリーンアップ

✅ このコマンドでできること(要点)

  • 指定した日数より古いファイルだけを抽出できる
  • 更新日時・作成日時を条件に使える
  • 削除前に内容を確認できる
  • 定期実行用のスクリプトにしやすい

✅ Where-Object + Remove-Item でできること

Where-Object は、
条件に一致する項目だけを抽出するためのコマンドです。

これを使って
「更新日時が〇日より前のファイル」
といった条件を指定し、
Remove-Item で削除することで、
必要なファイルだけを安全に残すことができます。

人の目による判断を減らし、
運用ミスを防げるのが大きなメリットです。

🧩 基本構文

Get-ChildItem 対象パス -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-日数) } |
Remove-Item

LastWriteTime は「最終更新日時」を表します。

▶ 基本的な使い方(まずこれだけ)

🔹 30日より古いファイルを削除する

Get-ChildItem C:\Logs -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item

このコマンドでエラーが出なければ、
30日より前に更新されたファイルが削除されています。

🔹 削除せず、対象を確認する

Get-ChildItem C:\Logs -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }

まず確認してから削除すると安心です。

🛠 よく使われる指定例

🔹 サブフォルダも含めて古いファイルを削除する

Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-90) } |
Remove-Item

長期間溜まったログ整理でよく使われます。

🔹 削除対象をログとして保存する

Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-60) } |
Tee-Object -FilePath C:\Logs\deleted_files.txt |
Remove-Item

削除履歴を残したい場合に便利です。

💼 実務でよく使う使用例(応用)

🔹 バックアップフォルダの世代管理

$target = "C:\Backup"
$days   = 14

Get-ChildItem $target -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } |
Remove-Item

🔹 WhatIf で削除内容を事前確認

Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -WhatIf
組み合わせ例

  • -Recurse で階層ごと整理
  • Tee-Object で削除ログ保存
  • -WhatIf で安全確認

🧩 よくある勘違い・つまずきポイント

  • フォルダも一緒に削除されると思い込む
  • 作成日時と更新日時を混同する
  • -Recurse の指定忘れ
  • 削除対象のパス指定ミス
  • 確認せずにいきなり削除してしまう

⚠ エラー・うまく動かないときの確認ポイント

  • 対象パスが正しいか
  • 削除権限がある場所か
  • 日付条件が意図どおりか
  • -WhatIf で事前確認したか

🧠 注意点

古いファイル削除は非常に便利ですが、
条件指定を誤ると重要なファイルを失う可能性があります。
初回実行時は必ず
-WhatIf
削除対象の確認を行いましょう。

📌 まとめ

  • Where-Object で古いファイルを抽出
  • Remove-Item で安全に削除
  • 日付条件を使った整理が可能
  • ログ・バックアップ管理に最適

🔎 PowerShellコマンドを探す

やりたいことからコマンドを探すこともできます。

  • 古いファイルを削除したい
  • ログを整理したい
  • 容量を確保したい
  • 一定期間で自動削除したい
  • エラーや実行できない原因を調べたい
  • PowerShellでメンテナンスしたい
  • 安全に削除したい
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る