以前当ブログにて、コマンドを使ったFSMOの確認と移行方法を解説しました。
こちらの手順は昔からある方法で、移行完了までに何回もコマンドを叩く必要があり非常に面倒。
この点について、元同僚からPowerShellを使えば楽だよ、という話がきたので実際に試してみました。
FSMOの確認
FSMOの確認には「Get-ADDomain」と「Get-ADForest」コマンドレットを利用します。
PDC、RIDプールマネージャ、インフラストラクチャマスタの確認
FSMOの内、ドメイン内で1台ずつ存在している「PDC(プライマリドメインコントローラ)」と「RIDプールマネージャ」、「インフラストラクチャマスタ」は「Get-ADDomain」コマンドレットを利用して取得します。
PS C:\Users\Administrator.KTRA> Get-ADDomain
AllowedDNSSuffixes : {}
ChildDomains : {}
ComputersContainer : CN=Computers,DC=ktra,DC=hoge,DC=com
DeletedObjectsContainer : CN=Deleted Objects,DC=ktra,DC=hoge,DC=com
DistinguishedName : DC=ktra,DC=hoge,DC=com
DNSRoot : ktra.hoge.com
DomainControllersContainer : OU=Domain Controllers,DC=ktra,DC=hoge,DC=com
DomainMode : Windows2016Domain
DomainSID : S-X-X-XX-XXXXXXXXXX-XXXXXXXXX-XXXXXXXXXX
ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=ktra,DC=hoge,DC=com
Forest : ktra.hoge.com
InfrastructureMaster : ktra-ad01.ktra.hoge.com
LastLogonReplicationInterval :
LinkedGroupPolicyObjects : {CN={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX},CN=Policies,CN=System,DC=ktra
,DC=hoge,DC=com}
LostAndFoundContainer : CN=LostAndFound,DC=ktra,DC=hoge,DC=com
ManagedBy :
Name : ktra
NetBIOSName : KTRA
ObjectClass : domainDNS
ObjectGUID : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ParentDomain :
PDCEmulator : ktra-ad01.ktra.hoge.com
PublicKeyRequiredPasswordRolling : True
QuotasContainer : CN=NTDS Quotas,DC=ktra,DC=hoge,DC=com
ReadOnlyReplicaDirectoryServers : {}
ReplicaDirectoryServers : {ktra-ad01.ktra.hoge.com, ktra-ad02.ktra.hoge.com}
RIDMaster : ktra-ad01.ktra.hoge.com
SubordinateReferences : {DC=DomainDnsZones,DC=ktra,DC=hoge,DC=com, DC=ForestDnsZones,DC=ktra,DC
=hoge,DC=com, CN=Configuration,DC=ktra,DC=hoge,DC=com}
SystemsContainer : CN=System,DC=ktra,DC=hoge,DC=com
UsersContainer : CN=Users,DC=ktra,DC=hoge,DC=com
この内、「InfraStructureMaster」と「RIDMaster」、「PDCEmulator」の値を取得すればいいわけですから、下記コマンドを実行します。
PS C:\Users\Administrator.KTRA> Get-ADDomain | Select-Object InfraStructureMaster,RIDMaster,PDCEmulator
InfraStructureMaster RIDMaster PDCEmulator
-------------------- --------- -----------
ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com
これで「InfraStructureMaster」と「RIDMaster」、「PDCEmulator」の役割が「ktra-ad01.ktra.hoge.com」に割り当てられていることが分かります。
スキーママスタ、ドメイン名前付けマスタの確認
続いてFSMOの内、フォレスト内で1台ずつ存在している「スキーママスタ」と「ドメイン名前付けマスタ」は「Get-ADForest」コマンドレットを利用して取得します。
PS C:\Users\Administrator.KTRA> Get-ADForest
ApplicationPartitions : {DC=DomainDnsZones,DC=ktra,DC=hoge,DC=com, DC=ForestDnsZones,DC=ktra,DC=hoge,DC=com}
CrossForestReferences : {}
DomainNamingMaster : ktra-ad01.ktra.hoge.com
Domains : {ktra.hoge.com}
ForestMode : Windows2016Forest
GlobalCatalogs : {ktra-ad01.ktra.hoge.com, ktra-ad02.ktra.hoge.com}
Name : ktra.hoge.com
PartitionsContainer : CN=Partitions,CN=Configuration,DC=ktra,DC=hoge,DC=com
RootDomain : ktra.hoge.com
SchemaMaster : ktra-ad01.ktra.hoge.com
Sites : {Default-First-Site-Name}
SPNSuffixes : {}
UPNSuffixes : {}
この内「DomainNamingMaster」の値と「SchemaMaster」の値を取得すればいいわけですから、下記コマンドを実行します。
PS C:\Users\Administrator.KTRA> Get-ADForest | Select-Object DomainNamingMaster,SchemaMaster
DomainNamingMaster SchemaMaster
------------------ ------------
ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com
これで「DomainNamingMaster」と「SchemaMaster」の役割が「ktra-ad01.ktra.hoge.com」に割り当てられていることが分かります。
FSMOの移行
FSMOの各機能が割り当てられているドメインコントローラを確認できたので、これらの機能を別のドメインコントローラに移行します。
FSMOの移行には「Move-ADDirectoryServerOperationMasterRole」コマンドレットを利用します。
こちらのコマンドレットを利用すれば、ntdsutilを使う手順と違ってFSMOの機能を全て一発で移行できます。
PS C:\Users\Administrator.KTRA> Move-ADDirectoryServerOperationMasterRole -Identity ktra-ad02 -OperationMasterRole 0,1,2,3,4
操作マスターの役割の移動
役割 'PDCEmulator' をサーバー 'ktra-ad02.ktra.hoge.com' に移動しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): A
PS C:\Users\Administrator.KTRA> Get-ADDomain | Select-Object InfraStructureMaster,RIDMaster,PDCEmulator
InfraStructureMaster RIDMaster PDCEmulator
-------------------- --------- -----------
ktra-ad02.ktra.hoge.com ktra-ad02.ktra.hoge.com ktra-ad02.ktra.hoge.com
PS C:\Users\Administrator.KTRA> Get-ADForest | Select-Object DomainNamingMaster,SchemaMaster
DomainNamingMaster SchemaMaster
------------------ ------------
ktra-ad02.ktra.hoge.com ktra-ad02.ktra.hoge.com
上記の通り一発でFSMOの全機能の割り当てを移行できました。
オプションについて
-Identityオプションでは移行先のホスト名を指定し、-OperationMasterRoleオプションではFSMOの内移行する機能を単体もしくはコンマ区切りで複数指定します。
このOperationMasterRoleオプションはFSMOの機能名もしくは、機能に割り振られた数字のどちらかで指定できます。
正式名 | 割り振られた数字 |
PDCEmulator | 0 |
RIDMaster | 1 |
InfrastructureMaster | 2 |
SchemaMaster | 3 |
DomainNamingMaster | 4 |
PS C:\Users\Administrator.KTRA> Move-ADDirectoryServerOperationMasterRole -Identity ktra-ad01 -OperationMasterRole PDCEmulator,RIDMaster,InfrastructureMaster,SchemaMaster,DomainNamingMaster
操作マスターの役割の移動
役割 'PDCEmulator' をサーバー 'ktra-ad01.ktra.hoge.com' に移動しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): A
PS C:\Users\Administrator.KTRA> Get-ADDomain | Select-Object InfraStructureMaster,RIDMaster,PDCEmulator
InfraStructureMaster RIDMaster PDCEmulator
-------------------- --------- -----------
ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com
PS C:\Users\Administrator.KTRA> Get-ADForest | Select-Object DomainNamingMaster,SchemaMaster
DomainNamingMaster SchemaMaster
------------------ ------------
ktra-ad01.ktra.hoge.com ktra-ad01.ktra.hoge.com
上記の通り、-OperationMasterRoleの値を正式名に変えて実行しても正常にFSMOの全機能の割り当てを一発で移行できました。
ntdsutilを使う方法と比べると楽さがぜんぜん違いますね・・・
他にも昔からの運用手順に固着してしまっている作業も、実はPowerShellを使えばサクッとできちゃうのかもしれませんね。
不定期連載と銘打ちましたが、できる限り毎週更新できればいいなぁと思っていますので、ぜひぜひご期待ください。
またタレコミも随時募集しております。