コンピュータのメンテナンス
 Computer >> コンピューター >  >> トラブルシューティング >> コンピュータのメンテナンス

たった4つのPowerShellワンライナーでWindowsメンテナンスの時短を実現

多くの人は、よくあるWindowsのトラブルに直面したときに初めてPowerShellコマンドに頼ります。しかし実は、トラブルが発生するに問題を防げるメンテナンス用コマンドも存在します。複雑なコマンドも多いのですが、その中にはすぐに覚えて使いこなせるワンライナー(1行コマンド)もあります。これらを活用すればメンテナンスの負担はぐっと減り、私自身のメンテナンス道具箱には欠かせない存在となりました。

PC内のアプリを一括更新する

アプリごとの更新ボタン探しはもう終わり

たった4つのPowerShellワンライナーでWindowsメンテナンスの時短を実現

Windowsで発生するクラッシュの多くは、古くなったアプリが引き金になっています。動作のもっさり感を招くだけでなく、脆弱性が修正されないまま放置されるため、悪意ある攻撃者によるマルウェア感染やデータ窃取の温床にもなり得ます。

WingetはWindowsに標準搭載されているパッケージマネージャーで、PowerShellから実行できます。1行のコマンドでPC上のほぼすべてのアプリを一度に更新できるのが魅力です。私が実際に実行しているのは次のコマンドです。

winget upgrade --all --include-unknown

Wingetが見つからない場合は、Microsoft Storeから「アプリ インストーラー」パッケージをインストールすれば利用できます。

このコマンドには重要なフラグが2つ含まれています。

  • --all:すべてのアプリを一括で更新する
  • --include-unknown:インストール済みバージョンを検出できないアプリ(ブラウザや開発ツールなど)も更新対象に含める

コマンドを実行すると、更新されたアプリ、スキップされたアプリ、バージョン番号の一覧が表示されます。このフィードバックのおかげで、手動での対応が必要なアプリをひと目で把握できます。Windowsアプリの更新方法として最も実用的な手段のひとつであり、アプリごとに個別チェックする手間から完全に解放されます。

なお、一部のアプリは管理者権限がないと更新できないため、管理者として実行した(昇格した)PowerShellでコマンドを実行するのがベストです。

一時ファイルのゴミを溜め込む前に一掃する

毎月実行すればディスク肥大化とは無縁に

たった4つのPowerShellワンライナーでWindowsメンテナンスの時短を実現

PCを日常的に使っていると、ストレージ不足に陥るリスクが高まります。インストールの残骸、ブラウザキャッシュ、アプリの一時ファイルなどが、気づかないうちに数GB単位でディスクを埋めていくからです。溜まるにつれてPCの動作が遅くなり、場合によっては軽微なアプリの不具合を引き起こすこともあります。

Windowsには一時ファイルを削除する標準機能があり、手動でのクリーンアップも可能ですが、PowerShellなら高速かつ効率的に処理できる1行コマンドがあります。

Get-ChildItem $env:TEMP -Recurse -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

このコマンドの対象範囲は$env:TEMPに限られます。C:\Windows\Tempにも一時ファイルが蓄積されるため、必要に応じて別途削除してください。

-ErrorAction SilentlyContinueフラグを付けることで、使用中のため削除できないファイルは自動的にスキップされます。これにより、エラーで中断されることなくコマンドを安全に完走できます。

実行が完了すると、即座にディスク容量を取り戻せます。回収できるサイズは数百MBから数GBに及ぶことも珍しくありません。

ベストな結果を得るには、重要なアプリが起動している最中に実行しないこと。アプリが特定の一時ファイルをロックしている可能性があるためです。

この1行コマンドが手動クリーンアップよりも優れているのは、複数のツールを開いたり、何階層ものメニューを辿ったり、「どのファイルを消して安全か」を推測したりする必要が一切ない点です。

小さな不具合が大問題になる前にWindowsを修復する

SFCとDISMを組み合わせて根本的に直す

長年の経験から分かったのは、健全なWindows環境でも、システムファイルやコンポーネントストアに小さな破損が少しずつ積み重なるということです。これが長期間放置されると、フリーズ、アプリのクラッシュ、起動の遅さといった症状につながります。早めにメンテナンスしておけば、こうしたストレスを未然に回避できます。

私が使っているコマンドはこちらです。

DISM /Online /Cleanup-Image /RestoreHealth; sfc /scannow

このコマンドは2つの部分で構成されており、実行順序が重要です。

  • DISMがWindowsコンポーネントストア(WinSxS)を修復する
  • SFCが破損したシステムファイルを、修復済みコンポーネントストアから取得した正常なキャッシュ版と置き換える

2つのコマンドは順番に実行され、完了まで数分かかることがあります。修復内容を完全に反映させるには、終了後の再起動が必須です。必須ではありませんが、OSの更新とシステム修復をまとめて自動化したいときは、PSWindowsUpdateモジュールと組み合わせることもあります。

フリーズやクラッシュを手動でトラブルシュートすると何時間もかかりかねないため、この方法の方がはるかに手軽で確実です。

ストレージを食いつぶしている犯人を突き止める

エクスプローラーが見せてくれないファイルを可視化する

たった4つのPowerShellワンライナーでWindowsメンテナンスの時短を実現

Windowsがドライブを圧迫していても、明確な理由が分からないことは多いものです。エクスプローラーでストレージを確認しても、それは表面をなぞっているに過ぎません。隠れたログファイル、古いインストーラー、忘れ去られたダウンロードファイルを見つけ出すのは容易ではありません。しかし、次のPowerShellコマンドなら、本当の犯人が一目瞭然です。

Get-ChildItem -Path C:\Users -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Length -gt 500MB } | Sort-Object Length -Descending | Select-Object FullName, @{Name="Size(GB)";Expression={[math]::Round($_.Length/1GB,2)}}

対象範囲はC:\Usersに限定しています。大きなファイルの大半はここに集中することが多いからですが、必要に応じてC:ドライブ全体へ範囲を広げても構いません。

Size(GB)を組み込むことで、生のバイト数が読みやすく判断しやすい数値に整形されます。結果はサイズの降順で並び替えられるため、最も大きなファイルが最初に表示されます。このコマンドを使わなければ、ディスクを圧迫している原因をひたすら推測し続けることになってしまいます。

私が実際に続けている10分間のメンテナンス・ルーティン

たった4つのPowerShellワンライナーでWindowsメンテナンスの時短を実現

これら4つのコマンドは、私の毎月のメンテナンス習慣そのものです。アプリの一括更新、ジャンクファイルの掃除、ストレージの容量食いの特定、システムファイルの修復までを網羅しています。定期実行に向いたメンテナンスコマンドは他にもありますが、まずはこの4つから始めるのが良い出発点です。どれも実用的で予防的、そして現実世界のメンテナンスに効率よく役立ってくれるはずです。

  1. PCの発熱はどこまで心配すべき?コンピュータへの熱の影響と冷却の仕組みを解説

    ふとPCの温度が気になったことはありませんか?ファンがいつもより勢いよく回っているのを聞くと、少し不安になるものです。しかし、本当に心配すべきなのでしょうか?この記事では、熱がコンピュータに与える影響と、PCが自らを冷やすために行っていることについて詳しく解説します。 どのパーツが熱を発生させるのか? PCが熱くなる理由はシンプルです。電気が流れることで、何百万もの回路の中で電磁的な動きが生じ、その際に内部抵抗によって熱が発生します。これは電力供給に伴う避けられない副産物です。LEDのように消費電力の小さな部品でもわずかに熱は生じますが、ごく微量です。各部品が必要とする電力量は実行中の処理内容

  2. 【解決済み】Active DirectoryでOUを削除できない「オブジェクトは偶発的な削除から保護されています」エラーの対処法

    Active DirectoryでOU(組織単位)やオブジェクトを削除しようとした際に、「このオブジェクトを削除する十分な特権がないか、オブジェクトは偶発的な削除から保護されています」というエラーが表示される場合は、本記事でご紹介する対処法をお試しください。このエラーは、主に以下の原因によって発生します。 オブジェクトの削除に使用しているADユーザーに、Active Directoryを変更するための十分な権限がない(例:「Domain Admins」グループに所属していない)。 削除しようとしているオブジェクト(OU、グループ、ユーザーなど)が、偶発的な削除から保護されている。 ウイルスな