人気ブログランキング |
2010年 09月 12日 ( 3 )
(ActiveDirectory)GPTの同期の方法は?
複数のドメインコントローラが有って、グループポリシーやActiveDirectoryのテストを行いたいときは手動で情報を複製したい時があります。

ActiveDirectoryデータベースのドメインコントローラ間の複製はMMCの「ActiveDirectoryサイトサービス」から Sites → ドメイン名 → Servers → DC名 → NTDS Settings で右ペインに表示されたオブジェクトを右クリック→「今すぐレプリケート」からできることは以前どこかで聞いたので知ってました。

ITPro:【解説】グループ・ポリシーの変更をすぐにクライアントへ反映させるには?によると、グループポリシーの設定はActive Directoryと結びついた情報である「グループ・ポリシー・コンテナ(GPC)」と、「グループ・ポリシー・テンプレート(GPT)」との二つに分かれてるようです。

GPTの方はSYSVOL共有フォルダにファイルとして保存されるようです。

おそらくGPCの方は、「ActiveDirectoryサイトサービス」でレプリケートしたときにドメインコントローラ間で同期されてるんでしょうが、GPTが入っているSYSVOL共有フォルダの方が、どうすれば同期できるのかがわかりません。

今回ログインスクリプトを下記のSYSVOL共有フォルダに保存しました。
\\domainname.local\SysVol\domainname.local\Policies\{xxxxx-xxxx-xxxx-xxxx-xxxxxx}\User\Scripts\Logon

この時、ドメインコントローラ1台目はログインスクリプトを差し替えると更新されたんですが、ドメインコントローラ2台目が更新されません。
しばらく放置してると更新されてました。

いろいろ調べたんですが、結局わからずしまいだったんで、直に2台のドメインコントローラにログインスクリプトファイルを差し替えることとしました。
SYSVOL共有フォルダは \\ドメインコントローラ名\SYSVOL\ でもアクセスできるようです。

SYSVOLの手動同期の方法なんか無いでしょうか?
by jehoshaphat | 2010-09-12 23:22 | サーバがらみ
(C++)文字列結合のwcscat関数でハマった
当初、下記のようにしてたらアクセス違反の例外となりました。

TCHAR path[] = _T("d:\\a.txt");
 
TCHAR file[1024] = _T("d:\\a.txt");
wcscat( _T("notepad.exe "), file );

で、よく考えたら、wcscat は第一引数に、第二引数の文字列を追加するんですよね。
よって、第一引数には、追加後の文字数以上の大きさ無いといけません。

ボケミスでした。
by jehoshaphat | 2010-09-12 23:21 | C/C++開発
WSHでログアウト・シャットダウン・再起動を行う
VBScriptでシャットダウンや再起動、ログオフを行う方法です。
下記のようなコードでできるようです。
Option Explicit
 
Dim objShut , objOS , objSystem
 
'シャットダウンオブジェクト取得
Set objShut = GetObject("winmgmts:{impersonationLevel = impersonate, (Shutdown)}")
'OSのオブジェクト取得
Set objOS = objShut.InstancesOf("Win32_OperatingSystem")
 
'シャットダウン
For Each objSystem In objOS
objSystem.Win32Shutdown 8
Next
 
'再起動
For Each objSystem In objOS
objSystem.Win32Shutdown 2
Next
 
'ログオフ
For Each objSystem In objOS
objSystem.Win32Shutdown 0
Next


参考:
WSH入門 > 第4回:Windowsでの運用の自動化について [高度情報技術科]
VBScript Tips (Tips0184)
by jehoshaphat | 2010-09-12 23:14 | VBA、マクロ