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
  • ベストアンサー率42% (1876/4424)
回答No.2

No.1の追記です。 すでにご存知だと思いますが念のための要点のみの追記です。 --- PowerShellのスクリプトは「.ps1」という拡張子のファイルに保存する。 セキュリティのため、デフォルトではスクリプト・ファイルの実行は禁止されている。 .ps1ファイルを実行するかどうかは、PowerShellの「実行ポリシー(Execution Policy)」で制御されている。 デフォルトではRestrictedになっているので、スクリプトは実行できない。 実行ポリシーを設定するには、Set-ExecutionPolicyコマンドレットを利用する。(PowerShellを「管理者として実行」して実行すること) Set-ExecutionPolicy RemoteSigned --- 現在の実行ポリシーを確認するには、Get-ExecutionPolicyコマンドレットを使用する。 Get-ExecutionPolicy --- 実行ポリシーは次の4通り。 Restricted すべてのスクリプトが実行禁止。PowerShellインストール直後のデフォルト設定 AllSigned 署名されているスクリプトのみが実行可能。署名されていないスクリプトは実行禁止 RemoteSigned ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能 Unrestricted すべてのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される --- 以上です。

---yamaori---
質問者

お礼

kteds様 ご回答ありがとうございました。 PowerShellを使用するのは初めてなので、上記の補足で記載頂いた内容も大変参考になります。 基本的な書き方もわからない状態ですが、早速今週中にスクリプトをテスト環境で動かしてみようと 思います。うまくいったら完了報告させて頂きます!

その他の回答 (1)

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

ワイルドカードが使えますので次のようにすればサブキーが .bakである Itemはすべて削除できます。 Windows NT 部分はスペースを考慮して "Windows NT" と指定してください。 Remove-Item HKLM:\SOFTWARE\Microsoft\"Windows NT"\CurrentVersion\ProfileList\*.bak

---yamaori---
質問者

お礼

ありがとうございました。

関連するQ&A

  • Vistaのローカルプロファイルをバッチで削除する方法

    初投稿です。 宜しくお願いします。 Vistaのローカルプロファイルを削除するバッチを作成しています。 C:\User\ログオン名 のフォルダを削除するだけだと、次回ログオン時 にエラーになり、一時プロファイルが作成されてしまいます。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList のSIDを削除すれば解決することは分かっているのですが、 バッチに展開するのが難しく悩んでいます。 GUIでプロファイルを削除すればきれいに消えることは分かって いるのですが、夜間バッチで削除したいと考えています。 他にもっと簡単な方法、内部コマンドなどはないものでしょうか?

  • PowerShell

    PowerShellについてです。 スクリプトを実行するために、実行ポリシーを以下のコマンドで、RemoteSignedに変更しようとすると、エラーで変更できません。どのようにすれば変更できるかわかる方いませんか。 --------------------------------------------------------------- Set-ExecutionPolicy RemoteSigned --------------------------------------------------------------- エラーメッセージ: Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell ' へのアクセスが拒否されました。 発生場所 行:1 文字:20 + set-executionpolicy <<<< RemoteSigned --------------------------------------------------------------- <<環境>> Vista 32bit

  • レジストリの変更で不具合が起こる可能性

    自分はレジストリをいじったことはほとんどないのですが、レジストリを変更したことによって不具合が起こる可能性はあるのでしょうか?OSはWindows7です。 例えば、自分は現在次のレジストリを変更しています。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\NoDriveTypeAutoRun また、レジストリ関連でもう一つ質問したいのですが、レジストリの作成、追加・削除方法は次の通りで合っていますか? 追加する場合、 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]"NoDriveTypeAutoRun"=91 削除する場合、 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]"NoDriveTypeAutoRun"=- これをそれぞれメモ帳に書いて、「.reg」ファイルとして保存する。 これらのレジストリを適用する場合、「.reg」ファイルをダブルクリックする。 回答よろしくお願いします。

  • AnHttpd の削除方法(アンインストール)について

    AnHttpdをアンインストールしたいのですが、できません。 いろいろ調べて方法はわかっているのですが、レジストリ削除ができません。 regedtでHKEY_LOCAL_MACHINE\SOFTWARE\AnHTTPd を削除すると、 「AnHttpdを削除できません。削除中にエラーが発生しました」と表示され regedt32で削除すると 「レジストリエディタは現在選択されているキーを削除できませんでした  キーまたはそのサブキーはユーザーにアクセス権を与えません」 という表示が出て消せないのです。 当然乍ら、Administratorのフルアクセス設定でやっています。 なにか設定が他にあるのでしょうか。宜しくお願い致します。

  • レジストリに書き込めなくて困ってます。

    レジストリに書き込めなくて困ってます。 レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runの新規キー作成などができなくなりました。ほかにもアクセスのできない部分があって困ってます。Windows XP SP2 管理者権限です。 COMオブジェクトの登録(?)にも失敗するみたいで、iTunesのインストールも失敗しました。どうしたらいいでしょうか?

  • 不明なレジストリキーの削除方法

     初めまして。  パソコンに関してはまだまだ初心者に毛が生えた程度のものですが、調子に乗ってレジストリのことを勉強していて、不要なレジストリキーは削除してもよいことを知り、色々見ていた中で、「HKEY_LOCAL_MACHINE\HKEY_LOCAL_MACHINE\SOFTWARE\株式会社」というキーが出てきました。 このキーにアクセスしようとしても「株式会社 を開けません。キーを開こうとしてエラーが発生しました。」とメッセージがでてアクセスできません。  こんな名前のソフトをインストール及び削除をした記憶は有りません。  残しておいても大丈夫とは思いますが、何か気持ち悪くてどなたか対処方法をご教授ください。  よろしくお願いいたします。

  • レジストリのことで質問します。

    今晩は。いつもお世話になっております。 質問は、タイトル通りでレジストリーのキーのことです。 たったいま、何気にレジストリーを見ていたら、「%systemroot%\system32\dumprep 0-u」というキーを発見しました。 発見場所は、HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows Runです。明らかに他のキーとは違うのですが、なぜこのようなキーが存在するのかが分かりません。 どなたかこのキーの意味を教えてください。 また、これはPCにとって有害なものでしょうか? 宜しくお願いいたします。

  • スパイウェアと疑わしいファイルの削除方法

    先日ad-awareを使用してスパイウェアを削除しようとしたところ、下記のレジストリキーとファイルが削除できませんでした。 CnsMin key:HKEY_CLASSES_ROOT\clsid\{b83fc273-3522-4cc6-92ec-75cc86678da4}\ CnsMin key:HKEY_CLASSES_ROOT\cnshelper.ch\ CnsMin key:HKEY_CLASSES_ROOT\cnshelper.ch.1\ CnsMin key:HKEY_CLASSES_ROOT\interface\{df692509-d9ef-48a0-9cd0-3aa5b81f6f68}\ CnsMin key:HKEY_LOCAL_MACHINE\software\3721\ CnsMin key:HKEY_CURRENT_USER\software\3721\ CnsMin key:HKEY_LOCAL_MACHINE\software\interchina\ CnsMin key:HKEY_LOCAL_MACHINE\software\microsoft\internet explorer\advancedoptions\!cns\ CnsMin key:HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\cnsmin\ CnsMin key:HKEY_CLASSES_ROOT\typelib\{aab6bce3-1df6-4930-9b14-9ca79dc8c267}\ CnsMin key:HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\explorer\shellexecutehooks\{b83fc273-3522-4cc6-92ec-75cc86678da4} CnsMin file:C:\WINDOWS\Downloaded Program Files\cnsio.dll cnsio.dllのほうは検索にも引っかからないし、 レジストリキーも削除しても再起動するとしっかり入っています。 これらを完全に削除する方法はないでしょうか?

  • レジストリー削除について

    Netscape4.6で起動したときに、システムレジストリの更新に失敗しました。 REGEDITをしようして更新してください。というメッセージが出ます。 ログインユーザーは、Administratorの場合はメッセージは出ません。 別のユーザーで、ログインするとエラーメッセージがでます。 レジストリのHKEY_CURRENT_USER\Softwareは削除できるのですが、 別のユーザーで、ログインするとエ HKEY_LOCAL_MACHINE\SOFTWARE\NETSCAPEを削除しようとすると、削除中にエラー が発生しましたというメッセージがでて削除できません。 なぜでしょうか。 削除できれば、システムレジストリの更新に失敗しました。 REGEDITをしようして更新してください。というメッセージが出なくなるのでしょうか 教えてください。

  • レジストリで・・

    ↓のレジストリで間違って変えてしまったので、 皆さんの数値?はどんなになってるでしょうか? HKEY_LOCAL_MACHINE→SOFTWARE→Microsoft→ Windows NT→CurrentVersion→WinlogonにあるSfcQuotaの値のデータを いってくれると嬉しいです。