【Management】Msgコマンドを使用すると「セッション名の取得エラー5」

image

前回の投稿で Msgコマンドを紹介しました。

【Windows7/Vista】ポップアップメッセージを送りたい(net send あらため msg.exe)

非常に便利なコマンドなのですが、規定ではリモートの Windows 7 や Windows Vistaに対してメッセージを送付することができません。例えば、以下のようなエラーが帰ってきます。

C:\>msg console /server:client01 “ログオフしてください~” セッション名の取得エラー5

これは、ターミナルサービスセッションに対するリモートからのRPC接続が無効に設定されているせいです。

リモートからのRPC接続を有効にするには、クライアントごとに以下のレジストリエントリを編集します。

キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
値の名前 AllowRemoteRPC
タイプ REG_DWORD
値 1

この設定はグループポリシーでは提供されておらず、残念ながら手動で設定する必要があります。

でも、この設定を1000台のクライアントに適用すると思うと、胃が痛くなりますね…。もしくはポリシーテンプレートを自分で作成しなければなりません。

でも大丈夫です。PowerShell 2.0 がインストールされていれば、必殺技を使うことができます。

以前以下の投稿をしました。

【Managemnt】WS2008 R2:ADMXファイルを作らずに業務アプリのレジストリ設定をグループポリシー化する

同様の手法を使用すれば、PowerShell のコマンドレット一発で、レジストリ設定をグループポリシーに組み込んでしまうことができます。手順を以下に示します。

  1. Active Directory がインストールされたサーバーで PowerShell を起動してください
  2. PowerShell コンソールで「Import-Module GroupPolicy」と入力してください。これはグループポリシー関連のコマンドレットを読み込むための操作です。
  3. グループポリシー管理コンソールで、ドメインの直下に新しいポリシーオブジェクトを作成してください。名前はなんでもけっこうです。ここでは「DemoPolicy」という名前で作成したとしましょう。
  4. PowerShell コンソールから、以下のように Set-GPRegistryValue コマンドレットを入力します。
    ※Set-GPRegistryValue 以降は1行で記述してください

PS C:\> Import-Module GroupPolicy PS C:\> Set-GPRegistryValue -Name DemoPolicy   –Key "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"   -ValueName "AllowRemoteRPC" -Value 1 –Type DWORD

DisplayName : DemoPolicy DomainName : techfielders.com Owner : TECHFIELDERS\Domain Admins Id : 2113794b-04df-4186-8d30-122b872b5e24 GpoStatus : AllSettingsEnabled Description : CreationTime : 2010/02/06 16:43:43 ModificationTime : 2010/04/06 19:11:54 UserVersion : AD Version: 0, SysVol Version: 0 ComputerVersion : AD Version: 5, SysVol Version: 5 WmiFilter :

PS C:\>

これでグループポリシーオブジェクト「DemoPolicy」には AllowRemoteRPC の設定が埋め込まれました。

もちろんグループポリシーですから、クライアントが再起動されれば、自動的に設定されます。

なんて便利!PowerShell 大好き!と叫ばずにはいられません。

以下も参考にしてください。