※ ChatGPTを利用し、要約された質問です(原文:PowerShell 2.0でのレジストリ削除方法)
PowerShellでWindows Server 2008 R2のレジストリ削除方法
このQ&Aのポイント
Windows Server 2008 R2で複数のユーザがログオンする際に発生する一時プロファイルの問題を解決するために、PowerShell 2.0を使用してHKEY_LOCAL_MACHINEのレジストリから「.bak」が付くサブキーを削除する方法を説明します。
一時プロファイルの問題は、ログオンする際にサーバ上のレジストリに「.bak」が付くサブキーが残ってしまうことが原因です。この問題を自動で解決するために、PowerShellスクリプトを使用して定期的に「.bak」のサブキーを削除する方法を提案します。
PowerShellを使ったレジストリの操作は危険を伴うため、事前にテスト機で動作確認を行うことをおすすめします。また、Microsoft社によると、ProfileList配下にはローカルプロファイル以外のサブキーは存在しないため、全てのローカルプロファイルでないサブキーを削除しても問題ありません。しかし、条件分岐が難しいため、最低限「.bak」のサブキーだけを自動で削除する方法を実装することをおすすめします。
PowerShell 2.0でのレジストリ削除方法
複数のユーザがログオンするWindows Server 2008 R2のサーバがあります。
ログオン時は各ユーザは別のファイルサーバに格納している移動プロファイルで
ログオンする仕組みになっているのですが、頻繁にユーザが一時プロファイルで
ログオンしてしまう事象が発生しています。
原因としては、以下の公開情報に記載されている通り、サーバ上のレジストリ
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList)に
「.bak」が付くサブキーが残ってしまうためだと判明しております。
レジストリに「.bak」のサブキーが残ってしまったアカウントでログオンすると、
一時プロファイルでログオンしてしまうようです。
■公開情報:Windows Vista ベースのシステムにログオンした後、一時プロファイルが読み込まれる
http://support.microsoft.com/kb/947242/ja
現在は、手動で定期的に「.bak」のサブキーを削除することで回避しているのですが、
頻繁に発生しており対象サーバの台数も多いことから、タスクスケジュール等で
自動的に削除する仕組みにしたいと考えております。
※レジストリの操作は危険を伴うことは理解しておりますので、自動化する場合は
テスト機で動作確認の上、実装する予定です。
Windows Server 2008 R2で標準搭載されているPowerShell 2.0であれば
HKEY_LOCAL_MACHINEのレジストリの操作が可能であることを知り、
Remove-Item -Path HKLM:でワイルドカードを使用して「.bak」が付くものを削除する…
というようなイメージで考えているのですが、PowerShellを扱った経験が無いため、
もし同じようなスクリプトを書いたことがある方がいらっしゃるようでしたら
アドバイスを頂きたいと考えております。(サンプルなどがあると大変助かります)
※Microsoft社に確認したところ、ProfileList配下にはローカルプロファイル以外のサブキーは
存在しないのが正常であるため、「.bak」が付くサブキーも含めてローカルプロファイルではない
サブキーは全て削除して良いとのことでした。
ただ、そのような条件分岐は難しそうなので、最低限「.bak」のサブキーだけは
自動で削除できるようにしたいと考えております。
お手数お掛けしますが、よろしくお願い致します。
お礼
kteds様 ご回答ありがとうございました。 PowerShellを使用するのは初めてなので、上記の補足で記載頂いた内容も大変参考になります。 基本的な書き方もわからない状態ですが、早速今週中にスクリプトをテスト環境で動かしてみようと 思います。うまくいったら完了報告させて頂きます!