話は違うのですが、Imagine Cup ってご存知ですか?ワールドワイドで実施されている、マイクロソフト主催の学生向けの技術コンテストです。
Japan Team のBLOG
毎年、決勝戦が世界各地で開かれるのですが、今年はなんとエジプト!アカデミックチームは、明後日、カイロに向けて出発するようです。うらやますぃ…。
以下の写真は決勝戦が行われる会場(設営中)なのですが、ご覧のとおり、砂漠の中で行われます。真ん中に一番に大きく見えるのがカフラー王のピラミッドで、左右がメンカウラー王とクフ王のピラミッドです。スフィンクスはギリギリこの写真では判別できませんが、右端になります。ツアーで訪れると、通常、右にあるクフ王(実際には一番背が高い)のピラミッドの「向こう側」から入場してきますが、そこからだとこの写真のように3つのピラミッドを絶好のコンディションで見ることができません。このような絶好のビュースポットには、ラクダを雇ってたどり着くことになりますが、���格交渉が疲れるんですよねぇ(笑)。ここだけの話ですが、安くラクダツアーに参加するには、カイロにある日本人宿で申し込むのが良いです。この写真の右側には(切れていて見えないですが)らくだツアーの集落があります。
ちなみに、最近のエジプトのビザはシールだって知ってました?2007 2004 年に行ったときには普通の印紙だったんですけどね。昨年訪れたとき、私は知らずに、裏面を舐めまくってしまいました…(恥)。アカデミックチームのメンバーも同じ間違いをして恥をかくように、心から遠くから祈っています。
さて、何の話でしたっけ?あ、書籍でした。
MVPの村嶋さんが執筆された書籍、「Windows Server 2008 実践ガイド」がリリースされました。700ページで3800円!これは安いです。
なぜ、あえてここでご紹介しているかといいますと、かゆいところに手が届いているんですねぇ。すごく。
実践ガイドというだけあって、Windows Server を一から構築していく手順が書かれているのですが、手順にとどまらず、なぜそういう設定をするのか、いま何をやっているのかという点がきちんと解説されています。村嶋さんらしく、ネットワーク系の実装については、力が入っていますね。
マイクロソフトの情報は、とかく「新機能」に偏ったものになりがちなのですが、この書籍では本来のWinodws Serverをきちんと解説してくれています。
是非ともこの本を手にとって見てください。
あと、アカデミックチームの皆さんは気をつけていってらっしゃい!日本チームの優勝を祈っています!
タイトルからでは意味がわかりずらいですね。というか完全に意味不明ですね…。すみません。
面白い機能なので早くお伝えしようとしていたのですが、そう思いつつ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
曰く…
たとえばこんなシチュエーションを考えます。
さぁ、こんなときにどうしましょう?と。
上にも書かれているとおり、グループポリシーの良いところは「定期更新」機能があるところです。デフォルトでは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 上の画面のように、インポートされたコマンドレットの一覧が表示されれば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:\>
規定のままでは set-GPRegistryValue は使用できません。まずは、GroupPolicy関連のコマンドレットをインポートする必要があります。以下のコマンドを、プロンプトから入力してください。
PS C:\> Import-Module GroupPolicy –verbose
上の画面のように、インポートされたコマンドレットの一覧が表示されれば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するには、プロファイルに書き込んでおく必要があります。
これらのコマンドレットは、グループポリシー管理機能がインストールされた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:\>
これで 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 :
赤い文字で書かれている「TestPolicy」とは、すでに存在するGPOの名前です。レジストリの設定をポリシーの一部として組み込むわけですから、どのポリシーに組み込むかを指定する必要があります。 「-Type String」は値のタイプです。今回は Reg_SZ を意味する String を指定しました。このほかに、ExpandString、Binary、DWord、MultiString、QWord を指定することができます。詳しくは、Get-Help Set-GPRegistryValue でヘルプを参照してください。 以上で設定は完了です。複数のレジストリ値が存在する場合には同じ処理を繰り返せばよいわけです。 この操作によって、SYSVOL配下のPoliciesフォルダに格納されているGPOに、上記の設定が書き込まれます。 しばらくすると、上で設定した値が実際のレジストリに反映されます。強制的に反映したい場合には、従来通り、コマンドプロンプト(PSプロンプトでもOKです)から gpupdate /force を実行しましょう。 レジストリエディタ上からこのエントリを消したり変更しても、バックグラウンド更新機能によって強制的に値が書き戻されます。
赤い文字で書かれている「TestPolicy」とは、すでに存在するGPOの名前です。レジストリの設定をポリシーの一部として組み込むわけですから、どのポリシーに組み込むかを指定する必要があります。
「-Type String」は値のタイプです。今回は Reg_SZ を意味する String を指定しました。このほかに、ExpandString、Binary、DWord、MultiString、QWord を指定することができます。詳しくは、Get-Help Set-GPRegistryValue でヘルプを参照してください。
以上で設定は完了です。複数のレジストリ値が存在する場合には同じ処理を繰り返せばよいわけです。
この操作によって、SYSVOL配下のPoliciesフォルダに格納されているGPOに、上記の設定が書き込まれます。
しばらくすると、上で設定した値が実際のレジストリに反映されます。強制的に反映したい場合には、従来通り、コマンドプロンプト(PSプロンプトでもOKです)から gpupdate /force を実行しましょう。
レジストリエディタ上からこのエントリを消したり変更しても、バックグラウンド更新機能によって強制的に値が書き戻されます。
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:\>
設定されている値を確認するには、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
設定した値は、あとで削除したり無効にしたくなることもあります。
その方法については次回。
前回の投稿では業務アプリのレジストリ設定を、グループポリシーに組み込む手順を書きました。
【Managemnt】WS2008 R2:ADMXファイルを作らずに業務アプリのレジストリ設定をグループポリシー化する
今回は、一度組み込んだ設定を「無効化」「削除」する方法について書きます。
「無効化」と「削除」は動作が異なるので注意してください。
■無効化するには
「無効化」とは、ポリシーエディタで設定するところの「未構成」と同等です。つまり、ポリシーの設定自体は残しつつ、クライアントやユーザーには「適用しない状態を維持する」という意味になります。 結果として、無効化された値はレジストリから消されるため、アプリケーションはデフォルト値で動作することになります。 ポリシー化した設定値を無効にするには、以下のように –Disable を指定するだけです。 PS C:\> Set-GPRegistryValue -Name "Testpolicy" -key "HKCU\Software\MyApp" –ValueName "InstallPath" –Disable 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 19:14:22 UserVersion : AD Version: 10, SysVol Version: 10 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter : PS C:\> 上記の例では特定のエントリ(InstallPath)が対象となっていますが、以下のように -ValueName を指定しなければ、MyAppキー配下の全てのエントリを一度に無効にすることができます。 PS C:\> Set-GPRegistryValue -Name "Testpolicy" -key "HKCU\Software\MyApp" -Disable 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 19:18:36 UserVersion : AD Version: 11, SysVol Version: 11 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter : PS C:\>
「無効化」とは、ポリシーエディタで設定するところの「未構成」と同等です。つまり、ポリシーの設定自体は残しつつ、クライアントやユーザーには「適用しない状態を維持する」という意味になります。
結果として、無効化された値はレジストリから消されるため、アプリケーションはデフォルト値で動作することになります。
ポリシー化した設定値を無効にするには、以下のように –Disable を指定するだけです。
PS C:\> Set-GPRegistryValue -Name "Testpolicy" -key "HKCU\Software\MyApp" –ValueName "InstallPath" –Disable
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 19:14:22 UserVersion : AD Version: 10, SysVol Version: 10 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter :
上記の例では特定のエントリ(InstallPath)が対象となっていますが、以下のように -ValueName を指定しなければ、MyAppキー配下の全てのエントリを一度に無効にすることができます。
PS C:\> Set-GPRegistryValue -Name "Testpolicy" -key "HKCU\Software\MyApp" -Disable
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 19:18:36 UserVersion : AD Version: 11, SysVol Version: 11 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter :
-Disable したあとで同じパスにレジストリエントリを書き込んでも、次回のバックグラウンド更新時にエントリが削除されてしまうことに注意してください。
■削除するには
ポリシー自体を削除するには、Remove-GPRegistryValue を使用します。これを使うと、きれいさっぱりGPOから削除されます。GPOから削除されたタイミングで、実際のレジストリパスからも削除されます。 Remove-GPRegistryValue を実行後に、手動で同じパスにエントリを追加しても、無効化したときのようにポリシーのバックグラウンド更新によって削除されることはありません。 以下は、特定のエントリ(InstallPath)のみを削除しています。よって、MyApp配下の他のエントリは削除されずに残ります。 PS C:\> Remove-GPRegistryValue -Name "Testpolicy" –key "HKCU\Software\MyApp" -ValueName "InstallPath" 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 19:44:56 UserVersion : AD Version: 16, SysVol Version: 16 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter : PS C:\> MyAppキーごと削除する場合には、-ValueName を指定しないようにします。
ポリシー自体を削除するには、Remove-GPRegistryValue を使用します。これを使うと、きれいさっぱりGPOから削除されます。GPOから削除されたタイミングで、実際のレジストリパスからも削除されます。
Remove-GPRegistryValue を実行後に、手動で同じパスにエントリを追加しても、無効化したときのようにポリシーのバックグラウンド更新によって削除されることはありません。
以下は、特定のエントリ(InstallPath)のみを削除しています。よって、MyApp配下の他のエントリは削除されずに残ります。
PS C:\> Remove-GPRegistryValue -Name "Testpolicy" –key "HKCU\Software\MyApp" -ValueName "InstallPath"
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 19:44:56 UserVersion : AD Version: 16, SysVol Version: 16 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter :
MyAppキーごと削除する場合には、-ValueName を指定しないようにします。
PS C:\> Remove-GPRegistryValue -Name "Testpolicy" –key "HKCU\Software\MyApp" 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 20:14:30 UserVersion : AD Version: 21, SysVol Version: 21 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter : PS C:\>
PS C:\> Remove-GPRegistryValue -Name "Testpolicy" –key "HKCU\Software\MyApp"
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 20:14:30 UserVersion : AD Version: 21, SysVol Version: 21 ComputerVersion : AD Version: 2, SysVol Version: 2 WmiFilter :
■PR<無償提供中!>■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ PowerPoint 用 素材集 に アイツ が登場 いますぐダウンロード■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ (注)これは Tech Fielders からのお知らせです。あやしくありません。
さて、前回、前々回と、Windows Server 2008 R2 のあたらしいグループポリシー機能についてご紹介しました。
既にご紹介したとおり、2008 R2 では、Set-GPRegistryValue コマンドレットを使用することで、ADMXファイルを作らなくても業務アプリの設定をグループポリシーに組みこむことができるようになりました。
この Set-GPRegistryValue で複数のエントリを一度に設定するには、以下のように書きます。
PS C:\> Set-GPRegistryValue -Name "TestPolicy" -Key "HKCU\Software\MyApp" -ValueName "InstallPath","InstallDate","AdminUsers","Operators" -Type String -Value "C:\Program Files\MyApp","2009/06/1","yamada","user01"
ちなみに、上の書式は、以下のエントリを書き込んでいます。
キーのパス 値のタイプ 値の名前と値 :HKCU\Software\MyApp :文字列 :InstallPath = C:\Program Files\MyApp :InstallDate = 2009/6/1 :AdminUsers = yamada :Operators = user01
:HKCU\Software\MyApp :文字列 :InstallPath = C:\Program Files\MyApp :InstallDate = 2009/6/1 :AdminUsers = yamada :Operators = user01
ただし、複数のエントリを一度に書き込むことができるのは、値のタイプが 文字列(String)か展開可能な文字列(ExpandString)の場合のみであることに注意してください。
また、あまり汎用性は無いように思えますが、以下のような書き方も可能です。上記との違いは –ValueName のかわりに、-ValuePrefix を使用しているところです。
PS C:\> Set-GPRegistryValue -Name "TestPolicy" -Key "HKCU\Software\MyApp" -Value Prefix "Operators" -Type String -Value "user01","user02","user10","tanaka"
結果は、以下をご覧いただいたほうがわかりやすいでしょう。
ご覧のとおり、指定した文字列を Prefixとして使用し、連番を付加して複数の値を設定することができます。
本日は TechNet Flash の配信日です。皆さまとろころには無事届いたでしょうか?
実は私のせいでリンクのミスが発生してしまいましたため、とりいそぎ、ここで修正を告知させていただきます。
ご迷惑をおかけしてもうしわけございませんです。
今後とも、TechNet Flash をどうぞよろしくお願い申し上げます。
-------------------------------
新しい技術を導入するときに困ること...それはこれまでの経験則が活かしづらいという点です。特に仮想化技術。概念としては理解していても、いざ設計しようとしたらどこから手をつけてよいかわからない。そんな悩みに答えるのが IPD (Infrastructure Planning and Design Guide) です。 あなたのインフラに最適な仮想化技術は何か? 必要なサーバー台数は? サイジングの計算式は? パフォーマンスを引き出すためのハードウェア構成は? IPD ではそんな疑問に答えるべく、インフラの設計工程で判断すべき事項や考え方を段階的にそして詳細に解説しています。仮想化技術以外にも、Active Directory や Windows 展開サービス用の IPD も公開されています。IT Pro の方は必見です!
•
IPD シリーズ
マイクロソフト株式会社 IT Pro エバンジェリスト 安納 順一
安納 順一のブログ
2009年12月25日 @IT Windows Server 2008 R2 強化されたGroup・Policy 機能
2009年12月10日 @IT Windows Server 2008 R2 進化したActive Directory
2009年06月25日 @IT Windows Server 2008 ターミナル・サービス・ゲートウェイ実践構築入門(後編)
2009年05月25日 Windows Server World 誌 7月号 特集 スクリプトが苦手な管理者のためのグループポリシー基本設定 活用講座
2009年05月13日 @IT Windows Server 2008ターミナル・サービス・ゲートウェイ実践構築入門(前編)
2009年02月18日 Software Design 誌 3月号 Active Directoryの基礎を学ぶ
2009年01月26日 Think IT Windows Server 2008で作る! 第3回 グループポリシーを使って楽々管理
2009年01月19日 Think IT Windows Server 2008で作る! 第2回 DFSによるファイルサーバーの可用性向上
2009年01月05日 Think IT Windows Server 2008で作る! 第1回 ここまでできる!標準ファイルサービス
2008年11月25日 日経BPソフトプレス Windows Server 2008 リソースキット グループポリシー編 監訳
2008年09月29日 日経BPソフトプレス Windows Servevr 2008 リソースキット Active Directory編 監訳
2008年04月10日 @IT Windows Server 2008 の基礎知識 第10回 ターミナル・サービスによるクライアントの仮想化(後編)
2008年02月21日 @IT Windows Server 2008 の基礎知識 第9回 ターミナル・サービスによるクライアントの仮想化(中編)
2008年02月07日 @IT Windows Server 2008 の基礎知識 第8回 ターミナル・サービスによるクライアントの仮想化(前編)
2008年06月05日 @IT 第4回 System Center Essentials 2007を使用した運用管理手順(2)
2008年02月27日 @IT 第3回 System Center Essentials 2007を使用した運用管理手順(1)
2007年12月06日 @IT 第2回 System Center Essentials 2007のインストール
2007年10月18日 @IT 第1回 System Center Essentials 2007によるデスクトップのライフサイクル管理
拡張子VBSで保存してください。
-----------------------
const scriptName = "fsrmReportLimit"
DIM limitNameslimitNames = Array("MaxFiles", "MaxFileGroups", "MaxFileOwners", "MaxFilesPerFileGroup", "MaxFilesPerFileOwner", "MaxFilesPerDuplGroup", "MaxDuplicateGroups", "MaxQuotas", "MaxFileScreenEvents", "MaxPropertyValues", "MaxFilesPerPropertyValue")
const optLimit = "/limit"const optValue = "/value"
DIM objArgs, fsrm, strLimitName, strLimitValue
set objArgs = wscript.Arguments if objArgs.count = 0 then PrintUsage() wscript.quitend if
if objArgs.count = 1 then if objArgs(0) = "/?" then PrintUsage() wscript.quit end ifend if
DIM i, jDIM strOption, strNewOptionDIM nModifyPropertiesnModifyProperties = 0for i = 0 to objArgs.count-1 if (LCase(objArgs(i)) = optLimit) then strLimitName = objArgs(i+1) i = i + 1 elseif (LCase(objArgs(i)) = optValue) then strLimitValue = objArgs(i+1) i = i + 1 else wscript.echo "Error: invalid argument, " & objArgs(i) PrintUsage() wscript.quit end ifnext
DIM limitNameCodelimitNameCode = -1for i = LBound(limitNames) to UBound(limitNames) if (LCase(strLimitName) = LCase(limitNames(i))) then limitNameCode = i + 1 exit for end ifnext
if (limitNameCode = -1) then wscript.echo "Error: invalid limit name, " & strLimitName PrintUsage() wscript.quitend if
set fsrm = WScript.createobject("fsrm.FsrmReportManager")
DIM newLimit
wscript.echo strLimitName & " = " & fsrm.GetReportSizeLimit(limitNameCode)
If trim(strLimitValue) = "" then Wscript.Quit
call fsrm.SetReportSizeLimit(limitNameCode, strLimitValue)newLimit = fsrm.GetReportSizeLimit(limitNameCode)
if (Int(newLimit) = Int(strLimitValue)) then wscript.echo "Report size limit " & limitNames(limitNameCode - 1) & " was changed to " & strLimitValueelse wscript.echo "unable to change limit " & limitNames(limitNameCode - 1) & ". Limit is set to " & newLimitend if
function PrintUsage()wscript.echo ""wscript.echo scriptName & " /limit <name> [/value <value>]"wscript.echo " <name> - name of the report size limit to modify"wscript.echo " <value> - new value for the size limit"wscript.echo ""wscript.echo "Report limit values:"for i = LBound(limitNames) to UBound(limitNames) wscript.echo " " & limitNames(i)nextend function
FSRMはご存知でしょうか? ファイル サーバー リソース マネージャ です。Windows Server 2003 R2 から実装された機能で、ディレクトリレベルのクオーター管理機能やファイルスクリーン機能などが実装されています。無償で使えるすごく便利な機能なのですが、案外知られていないんですねぇ。
よろしければ、以前ThinkITで書いた記事もご覧ください。
参考までに、Windows Server 2008 R2 では「分類管理(File Classification Infrastructure)」という機能が実装されます。これは、ファイルが持つ各種属性(サイズ、作成日時、所有者など)によってファイルを分類するという機能です。ファイルごとにフォルダを分けるのは当然ながら、独自のスクリプトを走らせることでドキュメントのプロビジョニングを柔軟に行うことができます。たとえば、最終アクセスが1年前のファイルをバックアップ用フォルダに移動するとか、サイズの大きなファイルの所有者にメールを出すとか。 残念ながら日本語RC版では実装されていないようなのですが、特定の文字列を含んだOfficeファイルやTIFFファイルに対してアクションを起こすなんてことも可能になるようです。たとえば、xxx-xxxx-xxxx というパターンに合致する文字列が含まれている場合には、個人情報(この場合は電話番号を想定)が含まれているとして自動的に暗号化するとか…いやぁ、夢が膨らみますね。
参考までに、Windows Server 2008 R2 では「分類管理(File Classification Infrastructure)」という機能が実装されます。これは、ファイルが持つ各種属性(サイズ、作成日時、所有者など)によってファイルを分類するという機能です。ファイルごとにフォルダを分けるのは当然ながら、独自のスクリプトを走らせることでドキュメントのプロビジョニングを柔軟に行うことができます。たとえば、最終アクセスが1年前のファイルをバックアップ用フォルダに移動するとか、サイズの大きなファイルの所有者にメールを出すとか。
残念ながら日本語RC版では実装されていないようなのですが、特定の文字列を含んだOfficeファイルやTIFFファイルに対してアクションを起こすなんてことも可能になるようです。たとえば、xxx-xxxx-xxxx というパターンに合致する文字列が含まれている場合には、個人情報(この場合は電話番号を想定)が含まれているとして自動的に暗号化するとか…いやぁ、夢が膨らみますね。
さて、本題です。
FSRM の「記憶域レポート」という機能を使用すると、ハードディスク内のファイルを調査して、さまざまなレポートを出力することができます。
などなど。
これまでスクリプト等で対応してきた方には非常に有用な機能でして、是非ともお使いいただきたいのですが、ちょっとだけハマりがちな点があります。それは、レポートに表示されるファイルの数です。
Windows Server 2008/2008R2(RC)共に、規定では 1000 が設定されており、たとえ100MB以上のファイルが10000個あっても、レポートには1000個しか表示されません。これはちょっと困りますよね。
この上限値はスクリプトで変更することが可能です。スクリプトのサンプルが MS の Storage Team の BLOG に掲載されています。
A script to increase FSRM report limit http://blogs.technet.com/filecab/pages/a-script-to-increase-fsrm-report-limit.aspx
が、ちょっと使い勝手が悪いところと、2008 R2 の 分類管理機能に関する上限値が実装されていなかったので、修正したものをこちらに 掲載しました。拡張子を vbs として保存してください。
書式は以下の通りです。/value を指定しなければ、現在の設定値を表示します。
保存したファイル名 /limit <name> [/value <value>]
<name> - 変更したい上限値の識別名 MaxFiles MaxFileGroups MaxFileOwners MaxFilesPerFileGroup MaxFilesPerFileOwner MaxFilesPerDuplGroup MaxDuplicateGroups MaxQuotas MaxFileScreenEvents MaxPropertyValues – 2008 R2 で有効 MaxFilesPerPropertyValue – 2008 R2 で有効
<value> - 変更後の上限値
識別名ごとに設定された上限値によって、レポートに表示する最大数が決まります。識別名はそれぞれ以下を意味しています。
最大値を超えると、レポートには以下のようなワーニングが表示されるので、上記のスクリプトで必要に応じて最大値を修正する必要があります。
Hyper-VのゲストOSに「統合サービス」をインストールすると、ゲストOSで以下の機能が使用できるようになります。
これらの機能は、以下の画面から一部を無効にすることも可能です。
この中で、「データ交換」とはどんな機能なのか?というご質問をいただきました。実は、恥ずかしながら私もきちんと把握していなかったので調べてみました。
当初、ホストとゲストの間でファイルを交換できるのかな?と思いこんでおりましたが、どうやら違うようですね…。
要は、
ホストとゲストの間で情報を交換(実際にはレジストリの値)するしくみ
です…といっても、なんだかよくわからないですよね。すみません。
ここで、以下の図をご覧ください。
※上のPPTのクリップアートが気になる方は、ここをクリック!
管理者が操作するPCと、ゲストOSがネットワーク的に通信が可能であれば、WMIのWin32_OperatingSystem等を通じてゲストOSの情報を収集することが可能です。
しかし、ゲストOSが使用しているネットワークが「プライベート」であったり、IPアドレスの体系が全く異なる場合には、いくら管理者といえどもゲストOSに接続することができません。セキュアな環境を構築したいと考える場合には、ゲストOSが使用するネットワークカードは、物理ネットワークカードから切り離すことになるでしょう。それでも、ゲストOSが大量に存在する場合には、スクリプト等でちょちょいと「ゲストOSリスト」なんてものを作成したいはずです。
そんなときは、ホストOSを介してゲストOSの情報を収集することが可能です。これを実現してくれるのが、ゲストOSにインストールされた「データ交換」機能なのです。
ちなみに、「データ交換」機能は、直訳すれば「Data Exchange」ですが、WEB等で記事を探そうとすると、これではヒットしずらいようです。多くの記事では 「KVP Exchange」という言葉が使われています。KVPとは Key Value Pair のことで、ご想像とおりXML形式のデータを指しています。つまり、ゲストOSの情報を KVPで交換できるということを意味しています。
実際にデータ交換を行うには、おなじみ WMI(Windows Management Instrumentation)に用意された仮想マシン用のクラス(msvm_*)を使用します。つまり、スクリプトの出番であると..。
具体的な使い方は次の投稿で..。
つづき http://blogs.technet.com/b/junichia/archive/2009/06/13/3253986.aspx
前回の投稿はこちら
【Hyper-V】統合サービスの「データ交換」ってなに?
では実際に、データ交換 機能を介して、ゲストOSの情報を取得してみましょう。
まずは以下の図をご覧ください。これは、ゲストOS上のレジストリエントリです。
ご覧いただくとお分かりのように、HKLM\Software\Microsoft\Virtual Machine\Auto 配下のエントリが表示されています。IPアドレスやOSのビルド番号、コンピュータ名などの基本的なOSの情報が格納されていることがわかります。
実は、ここに表示されているエントリは、ゲストOSにインストールされている「Hyper-V Data Exchange Service」によって生成されています。
統合サービスがインストールされたゲストOSのサービス。ちなみに、赤で囲んだサービスが、それぞれの統合サービス機能に対応している。
Hyper-V Data Exchange Service が起動するときに、OSの基本情報を収集し、このレジストリキー配下に書き込んでくれます。言い換えれば、このレジストリエントリをでたらめに書き換えても、Hyper-V Data Exchange Service を再起動すれば正しい値に戻すことが出来ます。
ホストOSを経由し、ゲストOSの「データ交換」を介して収集できる情報の1つが、ここに羅列されているレジストリエントリです。
以下の図はここまでの話をまとめたものです。
実際にAutoキー配下の値を取得するには、以下のようなコマンドを使用します(今回は PowerShellを使用しますが、WMI なので VBS を使用することもできます)。
まずはゲストOSの名前を使用して、以下のコマンドを実行します。これにより、Hyper-V上のゲストOSのインスタンスを取得できます($VM)。ここで使用しているのが、Msvm_ComputerSystem クラスであす。このクラスは通常使用する root\CIMV2 ネームスペースではなく、root\virtualication ネームスペースに定義されていることに注意してください。
PS C:\>$VM = Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='ゲストOSの名前' " -ComputerName ホストコンピュータ名 -Credential administrator
ちなみに、上のコマンドでは、別ドメインのサーバーを操作しているため –Credential でHyper-Vサーバーに接続する際のユーザー名を指定しています。これによって、以下のようなダイアログボックスが表示され、パスワードを入力することができます。
次に、以下のコマンドを入力します。
PS C:\> $Kvp = Get-WmiObject -Namespace root\virtualization -Query "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent" -ComputerName ホストコンピュータ名 -Credential administrator
{$VM} は前回のコマンドで取得したゲストOSのインスタンスです。注意していただきたいのは、「Associators of」というクエリーを使用しているところです。Associators of により、{$VM} に関連付けられている全てのインスタンスを収集することができます。その中には、ゲストOSの設定や、スナップショット情報、仮想ネットワーク情報などありとあらゆる情報が含まれています。
それらは有用な場合もあるのですが、今回行いたいのはゲストOSとの「データ交換」です。よって、Where句でデータ交換に関するインスタンスのみを取得するように指示します。それが、AssocClass=Msvm_SystemDevice とResultClass=Msvm_KvpExchangeComponent です。
これで必要な情報は取得できたはずです。以下のようにして、「GuestIntrinsicExchangeItems」を参照してみてください。
PS C:\> $kvp.GuestIntrinsicExchangeItems
以下のように、KVPデータがずらずらっと表示されたはずです。
これだと判読しづらいので、以下のスクリプトをPowerShell プロンプトにコピペしちゃってください。難しいことは考えなくてよいです(説明が面倒なんだろうって?いえいえ、そうではなく…笑)。
filter Import-CimXml { $CimXml = [Xml]$_ $CimObj = New-Object -TypeName System.Object foreach ($CimProperty in $CimXml.SelectNodes("/INSTANCE/PROPERTY")) { $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE } $CimObj }
これによって、Import-CimXml という名前のフィルタが作成されました。
今度は、フィルタも指定して、以下のように入力してみてください。
PS C:\> $kvp.GuestIntrinsicExchangeItems | Import-CimXml
以下のように表示されればOKです。
ゲストOSのレジストリの値と、PowerShellプロンプト上の表示を見比べてみてください。同じ値が表示されているはずです。
ためしに、ゲストOS上のレジストリエントリを修正し、再度 $KVPの取得を行っていただければ、修正後のレジストリの値を参照することができるでしょう。
修正したレジストリの値を元に戻すには、手で修正してもよいですが、Hyper-V Data Exchange Service を再起動したほうが間違いがありません。
今回は、データ交換によってゲストOSから情報を取得しました。
次回は、データ交換機能によって、ゲストOSのレジストリ上にデータを書き込む方法について解説します。
次回はゲストOSのサービスの状態をホストOSから取得する方法について解説します。
つづき
参考サイト
MSDN - Virtual PC Guy’s Weblog : Hyper-V Scripting http://blogs.msdn.com/b/taylorb/archive/2008/05/06/hyper-v-wmi-using-powershell-scripts-part-3-kvp-s-guest-os-version.aspx http://blogs.msdn.com/b/taylorb/archive/2008/07/06/hyper-v-wmi-kvp-exchange-aka-data-exchange-adding-new-items-from-parent-host.aspx
Interoperability Bridges & Labs Center というサイトをご存知でしょうか?
なんとなく、バラバラといろんな相互運用性プロジェクトが存在しているような感じですが、このサイトでマイクロソフトの相互運用性に関するプロジェクトの全てを見ることができます。
このサイトはMicrosoft Interoperability Strategy Group が中心となって運営されており、活動の様子は以下のBLOGでも継続的に報告されています。
Microsoft Interoperability Strategy Group のBLOG Interoperability @ Microsoft
一見、開発系に占領されているように見えますが、いえいえ、ITPRO向けの相互運用性プロジェクトに関する情報も多く掲載されています。
※2009/06/17 リンクを修正しました。失礼いたしました。
このサイトを基点として、各プロジェクトのサイトに移動できるので重宝するでしょう。
とかくオープンソース系からの攻撃にさらされているマイクロソフトですが、現在のマイクロソフトは以前とはガラリと変わっていますので、是非ともご認識いただけると幸いです。
で、なんでこんなことを突然書いたかと言いますと、6月4日にアメリカで開催された 2009 JavaOne Conference においてマイクロソフトがKeynoteに登壇したからなのです。
※MS登壇時のビデオは JavaOneサイトで公開されています
理由はもちろん、Sunとの相互運用性プロジェクトに関する重要な発表なのですが、その名も Stonehenge プロジェクト と言います。
Stonehenge プロジェクトの狙いは、W3CやOASISで定義されている既存のプロトコルを使用して(つまりSOAベースということですね)、Java, .NET, PHPなどによる相互運用性のあるアプリケーション開発に関するベストプラクティスを示すことです。サンプルコードや開発のためのガイダンスなどがマイクロソフト、サン、その他のベンダーによって整備される予定です。
興味のある方(すみません、英語なのですが)、是非とも以下をご覧ください。
タイトルを見て、これから何が書かれるのか想像がついた方は、酸いも甘いも経験したActive Directory使いであると言えるでしょう。
実はHyper-Vがリリースされてから、「正式な対応があるのだろうか?」と疑問に思い続けてきたことがあります。それは…
Hyper-Vでスナップショットを取った後で、コンピュータアカウントのパスワードがリセットされてしまったらどうなるのだろう?
きっと、同じ疑問を持っている方は多いはずです。
ドメインに参加しているコンピュータは、ユーザーと同様に「コンピューターアカウント」と呼ばれるアカウントを持っています。ユーザーアカウントの場合、定期的に利用者自らがパスワードを変更しますが、コンピューターアカウントの場合にも同様に、規定で30日に1回、パスワードをリセットします。
このパスワードは、ADとコンピュータ自身の両方に保存されており、両者が食い違った場合には「不正なコンピュータ」であるとしてドメインにアクセスすることができなくなります。もちろん、ユーザーがそのコンピュータを使用してログオンすることもできません。
こうした問題が発生するのは、たとえば、クライアントにバックアップからディスクイメージを戻した場合です。そのバックアップイメージが前回の自動パスワードリセット前に取られたものであれば、再度ドメインに参加しなおさないとユーザーはログオンすることができません。
※ドメインへの再参加ではなく、パスワードのリセットでいけたかどうか…ちょっと記憶にないです…どなたか経験者いらっしゃいますか?→ 2009.6.24 (参考) ドメインにログオンできない ~ セキュア チャネルの破損 ~ (Ask the Network & AD Support Team)
これと同じ問題が、Hyper-Vのスナップショットでも発生するはずだよなぁ…と考えていました。
実は、コレに対する現時点の回答が Windows Server Core Team のBLOGに投稿されました。
Running Hyper-V in a lab? Use Snapshots? Check this out! http://blogs.technet.com/askcore/archive/2009/06/03/running-hyper-v-in-a-lab-use-snapshots-check-this-out.aspx
対処法は、ずばり…
コンピューターアカウントのパスワードリセットを無効にしてください
とのこと…。あぁ、やはりそうきましたか..。
具体的にはコンピュータ側のレジストリを修正します。
DisablePasswordChange http://technet.microsoft.com/ja-jp/library/cc962289(en-us).aspx
これによって、コンピューターはドメインコントローラとのパスワードリセットを行わなくなります。
ちなみに、パスワードの有効期間を(限りなく)長くする…という方法もあります。
MaximumPasswordAge http://technet.microsoft.com/ja-jp/library/cc937922(en-us).aspx
なお、この設定はグループポリシーからも行えます。
[コンピュータの構成]-[ポリシー]-[Windowsの設定]-[セキュリティの設定]-[ローカル ポリシー]-[セキュリティオプション] の中の[ドメインメンバ:コンピュータアカウント パスワード: 定期的な変更を無効にする]
コンピューターパスワードのリセットを無効にすることにより、もちろん、セキュリティレベルは落とすことになります。
スナップショットは大変便利な機能ではあるのですが、本番運用系の場合には、こうした留意点もあることを覚えて置いてください。
どうにもお肌にツヤが無い、きょうこの頃です。
さて、イベントの告知をさせてください。
7月11日、広島のマイクロソフト中国支店にて、ヒーロー島との共催によりWindows 7 コミュニティ勉強会が開催されます。
Windows 7 コミュニティ勉強会 with Tech Fielders 中国編 http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032416507&Culture=ja-JP
この中で、私は Windows 7 PowerShell Remoting 30連発 というセッションを担当します。
Windows7/Windows Server 2008 R2 の新しい機能として、Windows PowerShell 2.0 があります。
標準でエディタがついていたり、Active Directoryをはじめとする運用管理系のコマンドレットが増えたりと、ワクワク感いっぱいなのですが、運用管理者にとってうれしいのが リモーティング と呼ばれるリモートコンピュータの運用管理機能です。
Windows NT 4.0 のころ、リモートコンピュータの情報を取得するのは至難の業でした。コマンドが必ずしも /Computer オプションをサポートしていた時代ではなかったわけです。
当時、リモートでコマンドを実行させるのに流行った方法は、ATコマンド。ATでは \\ComputerName でリモートコンピュータを指定することができました。なので、例えば「10秒後」の時間を指定して投げることで、すこし時間差はあるもののリモートコンピュータでの実行結果を得ることができました。ATの亜種であるSOONコマンドでは、時間を指定するのではなく、「10秒後」という指定ができたので、大変使い勝手がよかったです。
そのほか、NT 4.0 のリソースキットの Remote.exe や rconsole/rclient なども使ったりしました。
その後、WSH 5.6 では Remote Script 機能がサポートされ、さらにリモートコンピュータに対する管理の幅は広がりました。
そして、今回のPowerShell 2.0 です。
30のコマンドレットが /ComputerName 対応になっただけでなく、Invoke-Command が使えるようになり、そしてリモートコンピュータの PowerShell セッションをローカルコンソールに表示することができるようになりました(sshみたいな感じです)。
本勉強会の私のセッションでは、このようなPowerShell 2.0 のリモーティングについて詳しく解説したいと思います。
懇親会も予定されているようなので、是非ともお申し込みください!
ネットワーク ポリシー サーバーがユーザーにアクセスを許可しました。
ユーザー: セキュリティ ID: NULL SID アカウント名: TSGW01\Administrator アカウント ドメイン: - 完全修飾アカウント名: -
クライアント コンピュータ: セキュリティ ID: NULL SID アカウント名: - 完全修飾アカウント名: - OS バージョン: - 被呼端末 ID: UserAuthType:PW 起呼端末 ID: -
NAS: NAS IPv4 アドレス: - NAS IPv6 アドレス: - NAS ID: - NAS ポートの種類: 仮想 NAS ポート: -
RADIUS クライアント: クライアントのフレンドリ名: TSGW01 クライアント IP アドレス: 192.168.120.4
認証の詳細: プロキシ ポリシー名: ターミナルサーバーゲートウェイを介したターミナルサービスへの接続 ネットワーク ポリシー名: - 認証プロバイダ: <なし> 認証サーバー: TS01.contoso.co.jp 認証の種類: - EAP の種類: - アカウントのセッション ID: -
検疫情報: 結果: - セッション ID: -
---
ネットワーク ポリシー サーバーがユーザーのアクセスを拒否しました。
詳細については、ネットワーク ポリシー サーバーの管理者に問い合わせてください。
ユーザー: セキュリティ ID: NULL SID アカウント名: TSGW01\Administrator アカウント ドメイン: TSGW01 完全修飾アカウント名: TSGW01\Administrator
クライアント コンピュータ: セキュリティ ID: NULL SID アカウント名: Vista-demo01 完全修飾アカウント名: - OS バージョン: - 被呼端末 ID: UserAuthType:PW 起呼端末 ID: -
認証の詳細: プロキシ ポリシー名: ターミナルサーバーゲートウェイを介したターミナルサービスへの接続 ネットワーク ポリシー名: - 認証プロバイダ: Windows 認証サーバー: TS01.contoso.co.jp 認証の種類: 非認証 EAP の種類: - アカウントのセッション ID: - 理由コード: 7 理由: 指定したドメインは存在しません。
--------------
ユーザー: セキュリティ ID: CONTOSO\user01 アカウント名: CONTOSO\user01 アカウント ドメイン: CONTOSO 完全修飾アカウント名: contoso.co.jp/Users/user01
認証の詳細: プロキシ ポリシー名: ターミナルサーバーゲートウェイを介したターミナルサービスへの接続 ネットワーク ポリシー名: ターミナルサービスゲートウェイ用ネットワークポリシー 認証プロバイダ: Windows 認証サーバー: TS01.contoso.co.jp 認証の種類: 非認証 EAP の種類: - アカウントのセッション ID: -
検疫情報: 結果: フル アクセス セッション ID: ----
ホストが定義済みの正常性ポリシーを満たしていたため、ネットワーク ポリシー サーバーはユーザーにフル アクセスを許可しました。
検疫情報: 結果: フル アクセス 拡張結果: - セッション ID: - ヘルプ URL: - システム正常性検証ツールの結果: -----■接続がエラーになる場合
ユーザー: セキュリティ ID: CONTOSO\junichia アカウント名: CONTOSO\junichia アカウント ドメイン: CONTOSO 完全修飾アカウント名: CONTOSO\junichia
認証の詳細: プロキシ ポリシー名: ターミナルサーバーゲートウェイを介したターミナルサービスへの接続 ネットワーク ポリシー名: - 認証プロバイダ: Windows 認証サーバー: TS01.contoso.co.jp 認証の種類: 非認証 EAP の種類: - アカウントのセッション ID: - 理由コード: 48 理由: 接続試行はどのネットワーク ポリシーにも一致しませんでした。
とうとう7月になってしまいました。(失礼しました、なぜか勘違いしていました)みなさまいかがお過ごしでしょうか。わたしは、提出物に追われて胃が痛くなっています。
さて、TechNet Magazine で、「PowerShell によるユーザープロビジニングの自動化」に関する連載が、ひっそりと行われていたことをご存知でしょうか?
プロビジョニングという大げさな言葉が使われてはいますが、実はさほど複雑なものではありません。
CSVファイルからデータを読み込み、PowerShellで加工してActive Directoryに登録するという一連の流れをPowerShellで実現しています(状態の変更や削除といった作業については触れられていません)。
第1回 CSVファイルの読み込み http://technet.microsoft.com/ja-jp/magazine/2009.03.windowspowershell.aspx 第2回 Active Directoryへのユーザー作成とExchange 2007 メールボックス作成 http://technet.microsoft.com/ja-jp/magazine/2009.04.windowspowershell.aspx 第3回 ファイルサーバーへのホームディレクトリの作成とアクセス権の設定 http://technet.microsoft.com/ja-jp/magazine/2009.05.powershell.aspx 第4回 ユーザーをセキュリティグループに参加させる http://technet.microsoft.com/ja-jp/magazine/2009.06.windowspowershell.aspx
第1回 CSVファイルの読み込み http://technet.microsoft.com/ja-jp/magazine/2009.03.windowspowershell.aspx
第2回 Active Directoryへのユーザー作成とExchange 2007 メールボックス作成 http://technet.microsoft.com/ja-jp/magazine/2009.04.windowspowershell.aspx
第3回 ファイルサーバーへのホームディレクトリの作成とアクセス権の設定 http://technet.microsoft.com/ja-jp/magazine/2009.05.powershell.aspx
第4回 ユーザーをセキュリティグループに参加させる http://technet.microsoft.com/ja-jp/magazine/2009.06.windowspowershell.aspx
この全4回の連載を読破すれば、
が習得できるはずです。
お勧めです!
久しぶりにKMS(Key Management Service)に関する投稿です。
以下のコマンドを使用して、Windows Server にボリュームライセンスをインストールすると、サーバーは自動的にKMSとなります。
slmgr –ipk <ボリュームライセンスキー>
KMSが正しく動作するには、KMSサーバーは DNSに _VLMCS._tcp を登録できなければなりません。
私の手元の環境でKMSのテストをしていたところ、KMSサーバーのアプリケーションログに Event ID 12293(hr=0x800705B4) が出て、どうしてもDNSにサービスレコードを登録することができませんでした。
どうやらこれは、DNSへのレコード登録の際にタイムアウトが発生した..というものらしいのですが、再起動してもライセンスを再入力しても解決できませんでした。
そこで、ためしに Software Licensing サービスを再起動してみたところ…
あっさりと登録ができてしまいました。
こんな現象、どこかで見たことがありますね…そう、ADインストール直後です。DNSにAD関連のレコードが登録されないときも、NetLogonサービスを手動で再起動するという手がありました。
根本的な解決策ではないのですが、試してみてください。