Contents

Windows を自動的に維持するために私が使用している 6 つのタスク スケジューラと PowerShell の自動化

<本文>/images/dsc06948.jpg

私は記憶力があまり良くないので、Windows タスク スケジューラがタスクを忘れずに実行するという点で十分に認識されていないのだと思います。タスク スケジューラは、強力な Windows PowerShell を含むあらゆる種類のプログラムを呼び出すことができるため、システムを最高の状態に保つための優れたツールとなります。私にとって、これは自動化と PowerShell スクリプトの世界への第一歩でもあります。ここでは、私が Windows 11 のメンテナンス ルーチンを設定した方法をいくつか紹介します。

PowerShell とタスク スケジューラのセットアップ

/images/xda-task-scheduler-main-interface.png このガイドのほとんどのタスクでは、アクションの作成時に「プログラム/スクリプト」フィールドと「引数の追加フィールド」が最も重要になります。ほとんどの場合、「プログラム/スクリプト」は「powershell.exe」を起動するように設定されています。より複雑なコマンドの場合は、PowerShell スクリプトを作成する必要があります。ただし、システムがこれらを実行する前に、PowerShell で次のコマンドを実行する必要があります。


Set-ExecutionPolicy RemoteSigned -Scope CurrentUser  

これにより、現在サインインしているアカウントは、デジタル署名なしでローカルで作成されたスクリプトを実行できるようになります。

また、整理しておくために、カスタム タスクをタスク スケジューラのシステム メンテナンスという新しいフォルダーに保存しています。あるいは、同じスケジュールを共有するタスクの場合、すべてを一度に実行する単一のスケジュールされたタスクを作成できます。

Windows Defender のスキャン

バグを排除する

/images/xda-windows-defender-scan-schedule-task-scheduler.png

Windows Defender は、システムを厄介な脅威から保護するのに優れています。それでも、さまざまなセルフホスティング ソフトウェアを試し始めて以来、毎週明示的に手動でスキャンする必要があると考えています。

ヒント: タスク スケジューラには、ほとんどの Windows ツールのスケジュールされたタスクがすでに含まれています。必要なのはトリガーだけです。このために新しいタスクを作成するのではなく、Windows Defender のスキャン頻度を毎週に変更しました。ここでは既存のエントリを変更しましたが、記事の残りのスクリプトのほとんどは最初から作成されています。

/images/xda-task-scheduler-winget.png

Windows 11 の WinGet パッケージ マネージャーのおかげで、すべてのソフトウェアを最新の状態に保つのにかかる時間を大幅に節約できました。毎週金曜日の深夜に実行するようにスケジュールしました。

スケジュールされたタスクを作成するときに、プログラムを起動するように設定します。 「プログラム/スクリプト」フィールドに「powershell.exe」と入力し、「引数の追加」フィールドに次の内容を入力します。


winget upgrade --all --silent --accept-package-agreements --accept-source-agreements  

場合によっては、プロセスの完了後に更新されたプログラムが起動することがあります。勤務時間外のみに実行するようにスケジュールする前は、本当に面倒でした。

Windows 信頼性モニターを起動する

再発する問題があるかどうかを確認してください

/images/xda-task-scheduler-reliability-monitor.png

Windows の信頼性モニターはあまり知られていませんが、記録されるエラーの数に基づいてシステムの安定性を 1 から 10 のスケールで評価します。毎月起動することで、システムに継続的な問題が発生していないかどうかを監視するのに役立ちます。

Windows 信頼性モニターを起動するコマンドは 1 行だけです。スクリプトを使用せずにタスク スケジューラの引数フィールドに追加します。


Start-Process perfmon -ArgumentList "/rel"  

## ジャンクファイルをクリーンアップする

ストレージスペースを解放する

/images/xda-task-scheduler-disk-cleanup.png

私はディスク クリーンアップを定期的に実行して、ディスク領域からジャンク ファイルを削除しています。 スタート メニューから起動するだけでも簡単ですが、毎週のクリーンアップをスケジュールすれば、まったく考える必要がありません。

ディスク クリーンアップは、実行するたびに削除する項目のメニューを表示します。このプロセスをできるだけ自動化したいため、デフォルトのクリーニング プロファイルを設定しました。このプロファイルは、コマンド プロンプト ウィンドウに cleanmgr.exe/sageset:1 と入力することでカスタマイズできます。あとは、リストから選択して「保存」をクリックするだけです。

タスク スケジューラで、cleanmgr.exe を実行するルーチンを設定します。引数フィールドに「/sagerun:1」と入力して、クリーンアップ プロファイルを指定します。実行中は、それが起こっていることに気付かないでしょう。

ローカルブラウザの履歴をクリアする

プライバシーを向上させるため

/images/xda-task-scheduler-delete-browser-history.png

私は毎日のワークフローで Edge、Chrome、Firefox を使用しています。それらをすべて開いて履歴を個別に削除する代わりに、タスク スケジューラがそれを処理してくれます。

このスクリプトが機能するには、ブラウザを閉じる必要があります。次のスクリプトは Google Chrome 用です。このスクリプトを Microsoft Edge、Mozilla Firefox、およびその他のブラウザーに適合させるには、ファイル パスを特定の履歴と Cookie ファイルの場所に置き換えるだけです。


#Script start  

#Create an array of files to be removed  

$historyFiles=@("Archived History", "History", "Top Sites", "Visited Links")  
  
#Set the path to the Chrome folders containing said files. If there are multiple profiles in the browser, append their profile names after “\User Data’” in the path name.  
  
$chromeSystemFolder = "$env:LOCALAPPDATA\Google\Chrome\User Data\System Profile"  

$chromeProfileFolder= "$env:LOCALAPPDATA\Google\Chrome\User Data\Profile 1"  
  
# Loop through the array and delete the files  
  
foreach ($Item in $historyFiles)  

{  
  
$systemFilePath = Join-Path -Path $chromeSystemFolder -ChildPath $Item  

$profileFilePath = Join-Path -Path $chromeProfileFolder -ChildPath $Item  
  
Remove-Item -Path $systemFilePath -Force -ErrorAction SilentlyContinue  

Remove-Item -Path $profileFilePath -Force -ErrorAction SilentlyContinue  
  
}  

Write-Host “Chrome history deleted.”  
  
#Delete cookies stored in Chrome's “Network” folder  

Remove-Item "$chromeSystemFolder\Network\Cookies" -Force -ErrorAction SilentlyContinue  

Remove-Item "$chromeProfileFolder\Network\Cookies" -Force -ErrorAction SilentlyContinue  
  
Write-Host “Chrome cookies deleted.”  
  
#Wait for five seconds before closing the window  

Start-sleep 5  
  
Exit  
  
#Script end

システム検索履歴をクリアする

ローカル検索履歴も削除します

/images/xda-task-scheduler-file-history-delete.png

Web ブラウザと同様に、Windows ファイル エクスプローラーも、ローカル ファイルの検索履歴と実行履歴を記憶します。 PowerShell スクリプトで次のコマンドを使用して、毎週クリーンアップします。


#script start  

Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery" -Force -ErrorAction SilentlyContinue  
  
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -Name "*" -ErrorAction SilentlyContinue  
  
Write-Host “File explorer history and run history deleted.”  
  
Start-Sleep 5  
  
Exit  
  
#Script end

システムの健全性をチェックする

頻繁に実行する必要はありません

/images/xda-task-scheduler-system-health-check.png

問題が起こる前に予防した方が良いです。技術的には、Windows システム ファイル チェッカー (sfc) と展開イメージング システム管理 (DISM) ツールは、Windows アップデートが常に失敗するなどの問題が発生した場合にのみ必要になります。それでも、PC の状態を最新の状態に保つために時々実行します。次の 2 つのコマンドを 1 つの PowerShell スクリプトにまとめ、6 か月ごとに実行するようにスケジュールしました (スケジュール セクションで、毎月​​繰り返す を選択し、6 月のみにチェックを入れます)。


#Script start  

DISM /Online /Cleanup-image /RestoreHealth  

Sfc /scannow  
  
Write-host “System file scan complete”  
  
#Add a pause so the results page stays on-screen  

Pause  
  
#Script end

sfc と DISM の両方を実行するには、管理者レベルの権限が必要です。タスク スケジューラで、タスクの作成時に最高の特権で実行するオプションをオンにします。

他に何をすればいいでしょうか?

タスク スケジューラは、Windows 11 の組み込み機能を実行するだけではありません。サードパーティ製アプリの起動にも使用できます。たとえば、ディスク クリーンアップの代わりに、BleachBit を使用して実行をスケジュールしたり、Windows 信頼性モニターと並行して WizTree を使用してストレージ スペースを占有しているものをスキャンしたりできます。

健全なシステムを維持するためのその他のベスト プラクティスには、ファイル履歴バックアップのスケジュール設定やシステム復元ポイントの作成などがあります。ただし、重要なデータをバックアップする場合は、ほとんどのサードパーティ ソリューションが独自のスケジュール機能を備えているため、サードパーティ ソリューションを使用する方がよい場合があります。最後に、これらのタスクを営業時間外に実行するようにスケジュールすることは良い考えです。私は仕事中やゲーム セッションの途中で Windows がランダムにポップアップすることに悩まされました。

*️⃣ 出典リンク:

自動化、PowerShell、重要なデータのバックアップ、