本サイトはサイト運営費捻出のため、アフィリエイト広告を利用しています。*詳細
PowerShellでFSMOの確認と移行する方法

PowerShellでFSMOの確認と移行する方法

スポンサーリンク

以前当ブログにて、コマンドを使ったFSMOの確認と移行方法を解説しました。

[Active Directory] FSMOを別のドメインコントローラに移す方法
PowerShellを利用することでさらに楽に移せることが分かったので、PowerShell版の記事も公開しました。 https://syobon.jp/blo…
syobon.jp

こちらの手順は昔からある方法で、移行完了までに何回もコマンドを叩く必要があり非常に面倒。

この点について、元同僚からPowerShellを使えば楽だよ、という話がきたので実際に試してみました。

FSMOの確認

FSMOの確認には「Get-ADDomain」と「Get-ADForest」コマンドレットを利用します。

Use this topic to help manage Windows and Windows Server technologies with Windo…
docs.microsoft.com
Use this topic to help manage Windows and Windows Server technologies with Windo…
docs.microsoft.com

 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」コマンドレットを利用します。

Use this topic to help manage Windows and Windows Server technologies with Windo…
docs.microsoft.com

こちらのコマンドレットを利用すれば、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の機能名もしくは、機能に割り振られた数字のどちらかで指定できます。

正式名割り振られた数字
PDCEmulator0
RIDMaster1
InfrastructureMaster2
SchemaMaster3
DomainNamingMaster4
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を使えばサクッとできちゃうのかもしれませんね。

不定期連載と銘打ちましたが、できる限り毎週更新できればいいなぁと思っていますので、ぜひぜひご期待ください。

またタレコミも随時募集しております。