グループポリシーを使用してドメインユーザーのダウンロードフォルダを自動的にクリアする方法
ユーザーのダウンロードフォルダを自動的に空にする機能は…ちゃんと設定しないとちょっと面倒です。ユーザーが時間の経過とともに膨大な量のファイルを溜め込んで、システムの速度低下やドライブ容量の突然の不足を防ぐためです。ですから、自動化する方法を見つけましょう。これまでは、グループポリシーのログオンスクリプトに紐付けたPowerShellスクリプトを使うことで、まずまずうまくいきました。完璧ではありませんが、何もないよりはましです。
前提条件
これに取り掛かる前に、以下のものを用意しておいてください。
- Windows Server 環境 (2019 または 2022 など、問題ありません)。
- GPO を作成および調整するための管理者権限。
- PowerShell スクリプトの基本的な考え方と、スクリプトを GPO にリンクする方法。
- PowerShell スクリプトは、ユーザーがアクセスできる場所 (通常はネットワーク共有) に配置する必要があります。
ステップ1: PowerShellスクリプトを書く
これがコアです。ダウンロードフォルダ内のファイルを削除するシンプルなスクリプトです。
$downloadsPath = "$env:USERPROFILE\Downloads" Get-ChildItem -Path $downloadsPath -Recurse -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
これをClearDownloads.ps1
ドメイン内のどこかに保存します。通常は\\YourDomain\netlogonまたは、メイン ネットワーク共有など、誰でもアクセスできる別の共有フォルダーに保存します。
ステップ2: スクリプトを実行するためのバッチファイルを設定する
GPO はバッチ ファイルをスムーズに実行できるため、次の PowerShell スクリプトを呼び出す簡単なバッチ ファイルを作成するだけです。
powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File "\\YourDomain\netlogon\ClearDownloads.ps1"
これに名前を付けClearDownloads.bat
て、同じフォルダに放り込んでください。GPO を使って PowerShell スクリプトを直接実行しようとするよりも、特に実行ポリシーを使う場合は簡単です。
ステップ3: GPOを作成してリンクする
ここで役立つのが GPMC (グループ ポリシー管理コンソール) です。
- Windows + Rを押して、
gpmc.msc
と入力して押しますEnter。そう、GPMC です。 - ドメインを見つけて展開し、ユーザーが所属するOU(組織単位)を右クリックします。「このドメインにGPOを作成し、ここにリンクする」を選択します。
- 「ダウンロードフォルダーをクリア」のような名前を付けて、[OK]をクリックします。
ステップ4: スクリプトをユーザーログオンに関連付ける
ここで、ユーザーがログインしたときにこのスクリプトを実行するように GPO に指示する必要があります。
- 新しい GPO を右クリックし、[編集]を選択します。
- [ユーザーの構成] ➔ [ポリシー] ➔ [Windows の設定] ➔ [スクリプト (ログオン/ログオフ)]に移動します。
- [ログオン]をダブルクリックし、[追加]をクリックします。
- [参照]をクリックし、
ClearDownloads.bat
(ネットワーク共有から) を見つけて選択します。 - 「OK」をクリックします。完了です。
ステップ5: PowerShellスクリプトが許可されていることを確認する
PowerShellの実行ポリシーが邪魔になることがあります。WindowsはWindowsですから。スクリプトを確実に実行するには、この設定を調整してください。
- GPO エディター内で、[管理用テンプレート] ➔ [システム] ➔ [スクリプト]に移動します。
- 「Windows PowerShell スクリプトを最初に実行する」を見つけてダブルクリックし、「有効」に設定します。
- [適用]と[OK]をクリックします。
もちろん、Windows では必要以上に難しくする必要があります。
ステップ6:動作テスト
gpupdate /force
テストマシンの管理者コマンドプロンプトまたはPowerShellから実行し、ログアウトしてユーザーとして再度ログインしてください。ダウンロードがクリアされるはずです。すべてのユーザーですぐには実行されない可能性がありますので、数秒お待ちください。それでも問題が解決しない場合は、GPOの結果を確認しgpresult /h report.html
、スクリプトが実際に実行されたかどうかを確認してください。権限やネットワークパスの問題が原因で実行できない場合もあります。
追加のヒントとよくある落とし穴
- スクリプトの場所に全員がアクセスできることを再度確認してください。権限によってはスクリプトの実行がブロックされる場合があります。
- まずはPowerShellスクリプトを手動でテストしてください。PowerShellコンソールで実行してください。エラーが発生した場合は、まずそれを修正してください。
- GPO の更新は必ずしも即時に行われるわけではないので、しばらく待つか、 を使用して強制的に実行してくださいgpupdate /force。
- それでもスクリプトが実行されない場合は、クライアント マシンの実行ポリシー設定を調べます。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
必要に応じて設定などを行います。
結論
こうすることで、すべてのユーザーのログイン時にダウンロードフォルダが消去され、整理された状態が保たれ、デスクトップの動作も軽快になります。完璧ではありませんが、ユーザーが時々自分で消去することを忘れないように祈るよりはましです。
よくある質問
特定のファイルタイプを削除対象から除外することはできますか?
はい。PowerShell スクリプトを微調整して、.docx
や などの特定の拡張子をフィルターすることもできます.pdf
が、少し複雑になります。
ユーザーがいくつかのファイルを保存したい場合はどうすればよいでしょうか?
管理するのは彼ら次第です。このスクリプトはログオンごとにすべてを消去するだけです。期待値を設定するか、必要に応じて実行頻度を減らすと良いでしょう。
問題が発生した場合、これを元に戻すにはどうすればよいでしょうか?
GPO を削除するか、OU とのリンクを解除します。完了です。とても簡単です。
まとめ
- ダウンロードを削除するための簡単な PowerShell スクリプトを作成します。
- 誰でもアクセスできるネットワーク共有に配置します。
- スクリプトをサイレントに実行するためのバッチ ファイルを作成します。
- GPO を作成し、それをユーザー OU にリンクします。
- GPO 内でログオン時に実行されるスクリプトを設定します。
- GPO 経由で PowerShell スクリプトが有効になっていることを確認します。
- ポリシーの更新を強制してテストします。
これで誰かの時間節約になれば嬉しいです。私の場合は効果がありましたので、皆さんにも効果があるといいですね。