dポイントプレゼントキャンペーン実施中!

複数のユーザがログオンする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」のサブキーだけは
 自動で削除できるようにしたいと考えております。

お手数お掛けしますが、よろしくお願い致します。

A 回答 (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
すべてのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される
---
以上です。
    • good
    • 0
この回答へのお礼

kteds様

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

お礼日時:2014/06/02 09:47

ワイルドカードが使えますので次のようにすればサブキーが .bakである Itemはすべて削除できます。


Windows NT 部分はスペースを考慮して "Windows NT" と指定してください。
Remove-Item HKLM:\SOFTWARE\Microsoft\"Windows NT"\CurrentVersion\ProfileList\*.bak
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/06/12 17:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!