Blogs - フィールドSEあがりの安納です - Site Home - TechNet Blogs

フィールドSEあがりの安納です

Microsoft Evangelist -- Junichi Anno

Blogs

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

  • Comments 2
  • Likes

タイトルからでは意味がわかりずらいですね。というか完全に意味不明ですね…。すみません。

面白い機能なので早くお伝えしようとしていたのですが、そう思いつつ2ヶ月が経過してしまいました。

少し前に、USのグループポリシーチームBLOGに以下の投稿がありました。

Set a registry key value from the command line using Group Policy PowerShell cmdlets
http://blogs.technet.com/grouppolicy/archive/2009/04/01/set-a-registry-key-value-from-the-command-line-using-group-policy-cmdlets.aspx

曰く…

たとえばこんなシチュエーションを考えます。

  • クライアントに業務アプリケーションがインストールされている
  • 業務アプリの環境設定はレジストリで持っている
  • 業務アプリの環境変更は、レジストリを直接変更することで行っている
  • 業務アプリの利用者が間違えて環境を変えてしまう(レジストリが変わってしまう)ことがある
  • 本当は、ADMXファイルを作って、業務アプリの環境設定をグループポリシーに組み込みたい
  • そうすれば定期的に設定値がリフレッシュされることはわかっている
  • が、ADMXファイルを作るのは面倒…orz

さぁ、こんなときにどうしましょう?と。

上にも書かれているとおり、グループポリシーの良いところは「定期更新」機能があるところです。デフォルトでは90分に1回、バックエンドで再適用してくれるため、ユーザーが設定を変えてしまっても一定時間経過すれば管理者が意図した設定値に戻してくれます。更新間隔は変更することができますから、極端ですが1分に1回再適用なんてことも可能です。

ちなみに、更新間隔の変更は以下のノードで設定できます。

  • [コンピュータの構成]-[ポリシー]-[管理用テンプレート]-[システム]-[グループポリシー]-[コンピュータのグループポリシーの更新間隔]
  • [ユーザーの構成]-[ポリシー]-[管理用テンプレート]-[システム]-[グループポリシー]-[ユーザーのグループポリシーの更新間隔]

その恩恵にあずかるには、業務アプリ用のADMXファイルを作成しなければなりません。

でも、書式を勉強しなければならないため、ちょいと面倒です。

こで、Windows Server 2008 R2 GPMC で提供されている グループポリシー用の PowerShellコマンドレットを使用します。

その名も set-GPRegistryValue  です。

これを使うには手順を踏まなければならないので、以下にStep-By-Stepで書きます。

1.Windows Server 2008 R2 で PowerShell プロンプトを開く

グループポリシーを操作するので管理者モードで開いてください。

2.Group Policy用のコマンドレットをインポートする

規定のま��では set-GPRegistryValue は使用できません。まずは、GroupPolicy関連のコマンドレットをインポートする必要があります。以下のコマンドを、プロンプトから入力してください。

PS C:\> Import-Module GroupPolicy –verbose
image

上の画面のように、インポートされたコマンドレットの一覧が表示されればOKです。念のために、
Get-Command *-GP* で Group Policy 関連のコマンドレットが参照できるかどうか確認してみましょう。以下のように、全部で25個のコマンドレットが表示されるはずです。

PS C:\> Get-command *-GP*

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Backup-GPO                      Backup-GPO -Guid <Guid> -Pat...
Cmdlet          Copy-GPO                        Copy-GPO -SourceGuid <Guid> ...
Cmdlet          Get-GPInheritance               Get-GPInheritance [-Target] ...
Cmdlet          Get-GPO                         Get-GPO [-Guid] <Guid> [[-Do...
Cmdlet          Get-GPOReport                   Get-GPOReport [-Guid] <Guid>...
Cmdlet          Get-GPPermissions               Get-GPPermissions -Guid <Gui...
Cmdlet          Get-GPPrefRegistryValue         Get-GPPrefRegistryValue -Gui...
Cmdlet          Get-GPRegistryValue             Get-GPRegistryValue -Guid <G...
Cmdlet          Get-GPResultantSetOfPolicy      Get-GPResultantSetOfPolicy [...
Cmdlet          Get-GPStarterGPO                Get-GPStarterGPO -Guid <Guid...
Cmdlet          Import-GPO                      Import-GPO -BackupId <Guid> ...
Cmdlet          New-GPLink                      New-GPLink -Guid <Guid> -Tar...
Cmdlet          New-GPO                         New-GPO [-Name] <String> [-C...
Cmdlet          New-GPStarterGPO                New-GPStarterGPO [-Name] <St...
Cmdlet          Remove-GPLink                   Remove-GPLink -Guid <Guid> -...
Cmdlet          Remove-GPO                      Remove-GPO -Guid <Guid> [-Do...
Cmdlet          Remove-GPPrefRegistryValue      Remove-GPPrefRegistryValue [...
Cmdlet          Remove-GPRegistryValue          Remove-GPRegistryValue [-Gui...
Cmdlet          Rename-GPO                      Rename-GPO -Guid <Guid> -Tar...
Cmdlet          Restore-GPO                     Restore-GPO -BackupId <Guid>...
Cmdlet          Set-GPInheritance               Set-GPInheritance [-Target] ...
Cmdlet          Set-GPLink                      Set-GPLink -Guid <Guid> -Tar...
Cmdlet          Set-GPPermissions               Set-GPPermissions -Guid <Gui...
Cmdlet          Set-GPPrefRegistryValue         Set-GPPrefRegistryValue -Gui...
Cmdlet          Set-GPRegistryValue             Set-GPRegistryValue -Guid <G...

PS C:\>

これらのコマンドレットは、グループポリシー管理機能がインストールされたWindows Server 2008 R2 だけでなく、RSAT(の中のグループポリシー管理ツール)がインストールされたWindows 7でも使用することができます。

(余談)Windows 7 RC にグループポリシー管理ツールを入れた場合には、規定のモジュールとして組み込まれるようです。つまり、Import-Module しなくても使えました。

ちなみに、Import-Module でロードしたモジュールは、現在のPowerShellセッションのみで有効となるため、毎回 Import-Module を行う必要があります。毎回自動的にImport-Moduleするには、プロファイルに書き込んでおく必要があります。

3.set-GPRegistryValue を使用してレジストリの値を設定する

これで Set-GPRegistryValue コマンドレットが使えるようになりました。

ではさっそく、業務に必要なレジストリ設定を行ってみます。仮に、以下のレジストリ設定が必要であると想定します。

キーのパス:HKEY_CURRENT_USER\Software\MyApp
値の名前 :InstallPath
値のタイプ:REG_SZ
値 :C:\Program Files\MyApp

これをグループポリシーの一部として組み込むには、以下のコマンドをPowerShellのプロンプトから入力します。

PS C:\> Set-GPRegistryValue -Name TestPolicy -Key "HKEY_CURRENT_USER\Software\My
App
" -ValueName "Installpath" -Value "C:\Program Files\MyApp" -Type String

DisplayName      : TestPolicy
DomainName       : demodomain.com
Owner            : DEMODOMAIN\Domain Admins
Id               : 1eeb4b61-df4f-48eb-8e71-eb15d79bd855
GpoStatus        : AllSettingsEnabled
Description      :
CreationTime     : 2009/06/01 11:48:21
ModificationTime : 2009/06/01 12:09:10
UserVersion      : AD Version: 3, SysVol Version: 3
ComputerVersion  : AD Version: 2, SysVol Version: 2
WmiFilter        :

PS C:\>

赤い文字で書かれている「TestPolicy」とは、すでに存在するGPOの名前です。レジストリの設定をポリシーの一部として組み込むわけですから、どのポリシーに組み込むかを指定する必要があります。

「-Type String」は値のタイプです。今回は Reg_SZ を意味する String を指定しました。このほかに、ExpandString、Binary、DWord、MultiString、QWord を指定することができます。詳しくは、Get-Help Set-GPRegistryValue でヘルプを参照してください。

以上で設定は完了です。複数のレジストリ値が存在する場合には同じ処理を繰り返せばよいわけです。

この操作によって、SYSVOL配下のPoliciesフォルダに格納されているGPOに、上記の設定が書き込まれます。

image

しばらくすると、上で設定した値が実際のレジストリに反映されます。強制的に反映したい場合には、従来通り、コマンドプロンプト(PSプロンプトでもOKです)から gpupdate /force を実行しましょう。

image

レジストリエディタ上からこのエントリを消したり変更しても、バックグラウンド更新機能によって強制的に値が書き戻されます。

4. 設定されている値を確認する

設定されている値を確認するには、Get-GPRegistryValue を使用します。

PS C:\> Get-GPRegistryValue -Name testpolicy  -Key "hkey_local_machine\software\myapp"

KeyPath     : software\myapp
FullKeyPath : HKEY_LOCAL_MACHINE\software\myapp
Hive        : LocalMachine
PolicyState : Set
Value       : C:\Program Files\MyApp

PS C:\>

設定した値は、あとで削除したり無効にしたくなることもあります。

その方法については次回。

Comments
  • 前回の投稿では業務アプリのレジストリ設定を、グループポリシーに組み込む手順を書きました。 【Managemnt】WS2008 R2:ADMXファイルを作らずに業務アプリのレジストリ設定をグループポリシー化する

  • ■PR< 無償 提供中!>■■■■■■■■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■ PowerPoint 用 素材集 に アイツ が登場 いますぐダウンロード ■■■■■■

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment