且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ntdsutil.exe使用详解

更新时间:2022-10-03 22:47:22

在实际操作和试验中收集了各种ntdsutil的使用技巧,特总结一下,给大家看看!
: K1 n6 ~0 I" ~/ m8 s6 R* q
1.  用ntdsutil来清除无效的DC信息!
# x% w( V* x* T6 c% ], h7 Z' ^6 Y
假如你的备份域为abc.mstc.com 主域为ctu.mstc.com,现在备份域坏了。那么你在装有super tools的主控域上执行如下命令:
0 \5 r3 @$ x3 d6 i5 ^
C:\>ntdsutil6 q7 I/ M2 \  @9 {: g% u( E

ntdsutil: metadata cleanup - 清理不使用的服务器的对象# r7 x* y3 S! b9 |

metadata cleanup: select operation target - 选择的站点,服务器,域,角色和命名上下文
# z0 s1 b5 e: [, v" ^3 J8 m
select operation target: connections - 连接到一个特定域控制器. V- `( \! o9 t* n. T# U

server connections: connect to server ctu.mstc.com  --绑定到 ctu.

用本登录的用户的凭证连接 ctu。$ R3 w$ l  y& q
* I) x9 ~# d4 @$ q
server connections: quit - 返回上一层目录
0 B& H1 A7 V: ~4 z$ F
select operation target: list site - 在企业中列出站点(找到1个站点,标识为0)" u* j0 U3 g* s9 ?" Z, W+ A
; u, _. H+ M* k
找到 1 站点. Y: c5 |8 y/ v6 `, H
" c/ \& r0 P% a; E9 x
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mstc,DC=com2 D1 W" b! q& g- \/ S, e* r% c

select operation target: select site 0 - 将标识为 0 的站点定为所选站点

站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mstc,DC=com- l; ]. V9 _6 t6 E- u6 E

没有当前域5 v7 u/ U( ~1 a9 Z. o; E: b

没有当前服务器7 Q5 C) p( ~/ g" N# c, l
# [7 }+ ^( o! ]1 L8 A
当前的命名上下文
' K7 e. t2 c' T9 B
& W/ T5 i  Y3 Y. V! v
! q5 j9 ?7 d5 ^( ~4 s
# a% J- {' S+ A3 v
- u0 T; s+ x$ s
select operation target: list domains - 列出所有包含交叉引用的域" F8 d$ O/ _) n  g$ t

找到 1 域
- R1 D1 x" F7 ~! `* X4 J
0 - DC= mstc,DC=com  [: i1 V0 t+ Y( S

select operation target: select domain 0 - 将标识为 0 的域定为所选域, s. d5 \7 `) l

站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC= mstc,DC=com" m: k- O5 ]( F6 q

域 - DC= mstc,DC=com- M0 h3 d( Z: F% W! N, R% U

没有当前服务器
' F  u2 H$ {1 ^) Y8 z
当前的命名上下文

; t' e; U, f  T! `

% H( Z# |4 m- o0 N' W) p4 H4 ^

select operation target: list servers for domain in site - 列出所选域和站点中的服务器(找到两个:0-abc.mstc.com;1-ctu. mstc.com)8 w. d1 x/ z9 j& w, F( L
0 X" {' J- E  ?' t
找到 2 服务器
, T0 O, U% J( p! h/ d3 |9 O
0 - CN=ADDEMO,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC= mstc,DC=com6 u- D) v8 Y6 @' l1 c$ @
4 D3 d1 z3 u/ q. z/ p1 y
1 - CN=ADDDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC= mstc,DC=com5 |9 M4 r2 k5 H

select operation target: select server 0 - 将标识为 0 的服务器(abc)定为所选服务器——也就是要删除的DC8 ~. I% A& }$ l+ E% F( \1 G

站点 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=acme,DC=com
/ h$ E7 X/ N& q8 Z: B& ^
域 - DC= mstc,DC=com
$ P- g3 a& p0 T/ m
服务器 - CN=ADDEMO,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC= mstc,DC=com
6 ?% a( Z. K+ H
3 m9 ?0 m/ O/ ]2 ~
" C' v. \! Q3 o# R; a+ n# w

! ?2 j) E! {- S8 N+ D. t
DSA 对象 - CN=NTDS Settings,CN=ADDEMO,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configur

DNS 主机名称 - abc.mstc.com

计算机对象 - CN=ABC,OU=Domain Controllers,DC=mstc,DC=com& \0 C7 z7 a! }3 d: y
5 R4 W( Q7 J8 g, d
当前的命名上下文* L: A& C0 n/ D- {2 o; R2 Q
' D( B( v. X0 a$ ^$ M
. `! n  R5 r$ p4 z+ a
4 E6 q% w' |2 s& G& N9 J
: \  v. U. O% ~! A7 j, R, ^5 O7 O

select operation target: quit - 返回上一层目录





metadata cleanup: remove select server - 从所选服务器上删除 DS 对象$ v9 Y- c4 a# k2 T. x. S4 l6 {
9 f  B& J' y- {" [0 l2 i% R
在弹出的对话提示框上选择“是”,' O2 c/ q  ?1 X7 [' ?0 e$ x, c

“CN=abc,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC= mstc,DC=com”删除了,从服务器“ctu”( b0 Y: V. j3 v& A) R; |7 w

现在,abc.mstc.com这个Dc对象就在你的AD里消失了.) P9 u! M' t/ |" [

7 s9 ]' G3 [7 G! G
4 p$ z: }1 V, k$ X


2.用ntdsutil来转移fsmo五种角色。0 T/ ]2 a' B6 x/ L9 j  ?1 Q
% t7 b' s/ E' e" t9 x  U( N
当您运行Dcpromo.exe 程序并安装 AD 时,将向目录林中的第一个域控制器授予五个 FSMO 角色。其中有两个 FSMO 角色是目录林范围的,另外三个是域范围的。如果创建了子域,两个目录林范围的角色将不会更改。一个具有两个域的目录林将有八个 FSMO;其中两个是目录林范围的角色,每个域各有三个特定于域的 FSMO 角色。这五个角色是schema master-架构主机,Domain naming master-域命名主机,Rid master-rid主机,pdc master-pdc防真器,Infrastructure Master-结构主机。想要把这几种角色移动到另一台计算机上有2种方法,一种是转移,但必须2台计算机处于正常运行状态。如果有其中某台处于离线状态只能用第二种方法,使用ntdsutil工具来强制获取这些角色。现在如果你的主控坏了这些角色也都在主控上,请在装有support tools工具新的域控或备份域控上执行如下命令:首先在CMD下运行, h/ S5 i) s; B* P3 B" m
netdom query /d:域名 fsmo( J+ n* s% O$ N$ ^1 E, B3 {3 B
查看一下当前哪些角色在哪台服务器上,
然后在CMD下运行 
"ntdsutil"如果不知道命令怎么写,可以输入?得到帮助提示,
"roles" 
"connections" 
"connect to server 服务器名" 绑定一台当前在线的DC: e& M  d  [8 Z, G. Q. @, Y
当连接成功后输入 q 退出
回到上一层(roles)准备做角色迁移$ o9 P) S2 {" M" I, T
"Seize schema master"- P; x' S* }6 i- o' U/ J$ h* Q) u
"Seize domain naming master"  [( L" S& X" N. Q
"Seize RID master"# i/ n( m0 w+ G/ w$ \1 y
"Seize PDC", t; e5 w# t5 H2 u4 M8 J
"Seize infrastructure master"4 p, w; w* U% r. I% {" ?0 ^, [( Q
以上五个命令,分别用作迁移上面所提到的5个角色到我们之前绑定的服务器上。1 j# }( \- z+ x+ X9 a. g4 L
完成后再次回到CMD下执行"netdom query /d:域名 fsmo",检查角色是否已被迁移
) f+ u& Y% m7 y7 `
- U$ x) G, K; G5 @$ ^% t
在“常规”选项卡上,找到全局编录复选框以查看其是否选中。如果正常就说明角色转换已成功。% h1 s) }1 E- ?/ s$ K: [% T0 u

6 V& e9 o8 q) c# u4 \3 l5 x9 j: J

" @* b/ O, p9 b" V3 Z- U8 c

+ ?/ G" H9 _3 e) @) {
3.微软提供了NTDSUtil这个工具可以对AD数据文件进行下线碎片整理操作. 由于微软已经提供了这整个操作过程的说明,所以在这里我只稍微重复一下,再加上一些额外的说明以避免大家犯一些不必要的灾难性错误, 因为这是一个很关键的操作,一旦出错将是灾难性的.

" q2 {  s0 ^2 e* N( R- Z5 |

# r7 s+ w6 w6 e- z8 d* M
6 ?  U6 ~: e% U. `
' R& q$ z. ?5 V( o
1. 用必要的备份软件备份你即将要操作的每一架DC,如果没有专业的备份软件用NTBackup也可以.$ ?8 n+ M. Q: z4 g
. T) }; ?" Q) q7 F6 N# M' j- B

2. 重启DC按F8键进入目录服务恢复模式以进行对AD的操作.) _: @% W( V3 t& D


3. 如果硬盘还有足够的空间那么请再次备份当前的ntds.dit文件,把它拷贝到一个临时文件夹内作为备份直到所有的整理工作成功完成.记住,不要重新命名文件,否则整个压缩过程不可能完成.4 I% _- M- z9 O* S2 ?: b: ?% T, F
+ v  k1 K% y/ P% V- ^1 F: ~

4. 在命令行下键入以下的命令:


a) Ntdsutil


b) Files+ ~) X/ ^$ n( ], b


c) Info (记下当前ntds.dit的路径.)+ u- Z' c: T2 s* D
% n+ L/ o4 c" P# T

d) 键入 compact to "c:\compact" 以把经过压缩处理的ntds.dit文件放置到这个文件夹中保存, 如果这个文件不存在,Ntdsutil 会自动建立一个(这个文件夹可以是任意名字).; N9 R7 }4 |- |4 `/ I% f5 v7 u" K

( ?6 r$ s" r1 \: c7 l
5. 如果要退出Ntdsutil的界面,请连续两次键入下面的命令: 

1 z& f  V3 G) E
a) quit% y! N1 Z7 `" {: N- G


b) quit7 o, F8 {3 b- Z! k$ j# a& {0 R

( x7 p& M/ Q" d! J
6. 用在c:\compact文件夹下已经经过压缩后的ntds.dit覆盖当前的ntds.dit.& Q6 d: X$ [9 k. B, Q4 ~/ M( b


7. 删除在AD数据库文件文件夹下的所有.log文件.


8. 重新正常启动DC.
1 n% o! v; E0 }4 k+ ^/ c
8 W% M3 w# G3 n
9. 再次备份整理后的DC,如果一切正常,你就可以把刚才复制备份的ntds.dit删除了.
+ T4 j3 x6 F6 i$ B# G) p







9 R8 s) M& L0 E2 ]8 ?

4. 查找和清理(或删除)重复的安全标识符 (SID)2 p, s/ z: Q& n
' e% }) \- v( F& S8 G

如何检查是否有重复的 SID

$ w! B4 U2 M! d4 j9 `& R0 j/ [
1. 在 Ntdsutil 命令提示符下,键入 security account management,然后按 ENTER 键。 
, J0 o' ]* l. T$ n! N

2. 在 Security Account Maintenance 命令提示符下,键入 connect to server 服务器的 DNS 名称,然后按 ENTER 键。连接到存储着您的 SAM 数据库的服务器。 
1 L. l) K% V2 {7 o/ i% i6 X) g
; ~. r: S& h3 J' y3 |3 }1 Y
3. 在 Security Account Maintenance 命令提示符下,键入 check duplicate sid,然后按 ENTER 键。将显示重复的 SID。! p- m0 r6 A+ {. @
7 r5 M7 O0 \$ k* h' {6 z$ w

如何清理重复的 SID1 T2 O! J( w% s


1. 在 Ntdsutil 命令提示符下,键入 security account management,然后按 ENTER 键。 
9 M: D" h( Q9 {3 R# f

2. 在 Security Account Maintenance 命令提示符下,键入 connect to server 服务器的 DNS 名称,然后按 ENTER 键。连接到存储着您的 SAM 数据库的服务器。 
& ~/ S. y$ \5 h7 x

3. 在 Security Account Maintenance 命令提示符下,键入 cleanup duplicate sid,然后按 ENTER 键。Ntdsutil 将确认删除重复的 SID。 * f8 \9 t! m, ~0 G- p: o

. G3 ]9 n9 x3 L  X8 w/ E
4. 在 Security Account Maintenance 命令提示符下,键入 q,然后按 ENTER 键。   C& o8 f3 n3 ^


5. 完成 Ntdsutil 下的操作后,键入 q,然后按 ENTER 键。
2 ^( t  h( P8 [5 ~0 T




3 {% t/ o- W; x4 M, k# a' j
1 p7 f7 Y1 Z* D1 F6 x6 l9 i6 @5 w

" y4 K0 k/ C6 L2 K
, C. P2 j6 M$ J0 j3 ?
5. 使用 Ntdsutil 实用工具将 IP 地址添加到 IP 拒绝列表.

9 ]6 m5 `5 O- F. Q7 i
如何向拒绝列表添加 IP 地址
7 j7 e6 s, Q* y- K
/ C5 B3 M$ r8 i( t6 M9 w
1. 在 Ntdsutil 命令提示符下,键入 IPDeny List,然后按 ENTER 键。 9 y4 W4 O2 @5 }! A


2. 在 IP Deny List 命令提示符下,键入 connections,然后按 ENTER 键。 : x  a2 u( U' k3 Q  @1 }0 u! l
0 j& J% q8 b) P  n
/ {% m2 O- w) k- ~8 n- y4 X. D  X
3. 在 server connections 命令提示符下,键入 connect to server 服务器的 dns 名称,然后按 ENTER 键。

1 N* B% c# c1 r  D8 _
备注:请连接到您正在使用的服务器。 4 x0 u  ]* Q) u7 _$ @/ G
4 X$ D2 p2 I; W+ N' t
& j& H6 o" w" L' _1 u0 q- l5 W! w
4. 在 Server connections 命令提示符下,键入 q,然后按 ENTER 键返回到先前的菜单。 % ]) W7 N* g& I( k/ s
+ J$ q' {# S9 a, z
+ i) M) @* e, g; m3 ?5 x4 Z
5. 在 IP Deny List 命令提示符下,键入 add IP 地址掩码,然后按 ENTER 键。 : j7 F0 ~3 x# {* M# Y

1 K6 B. _% m( Q" `
如果您正在单节点环境中工作,可将“node”用作掩码变量。 
) D* l; x- ?( u  i1 W* g6 [9 k# y

6. 在 IP Deny List 命令提示符下,键入 commit,然后按 ENTER 键提交所作的更改。 & o+ q$ I" W3 k* F+ T+ G3 a5 r
4 P2 _( J: d* f* l0 F

如何验证添加的项


1. 在 IP Deny List 命令提示符下,键入 Show,然后按 ENTER 键。 

5 R' R' m0 G# K* W) j5 h
将显示所有被拒绝的 IP 地址的列表。 / u, N, K! E6 g, g1 l* D
/ x. w! Z- v/ ^) M
! F: i5 _) W* z& \) p; M! _8 B
2. 在 IP Deny List 命令提示符下,键入 q,然后按 ENTER 键。 


3. 在 Ntdsutil 命令提示符下,键入 q,然后按 ENTER 键退出 Ntdsutil。  |6 T# Y/ y' N  o  ]) I

/ ?* R: ?- \- o
3 Y' X* r# J5 L


5 u( g" b. ?$ B$ ^
6. 重设DSRM密码
4 A. \" K0 `+ n- H6 n5 J
1. “开始” - “运行” - “CMD”
6 W1 F6 A3 r$ d! X
- F" S% m8 a* f8 u( s4 K
2. ntdsutil! d3 n, C7 r; X
2 k: k6 l. v9 e- q3 C" q# X
. a4 f4 x( g( K- j" ^! ?
3. 在“ntdsutil:”提示符下输入“set DSRM Password”! A8 X$ o# b$ _/ Y: [0 p/ Q% w. a
* S0 N$ a+ c0 r4 Z
8 L# ^- W" a! f( ?+ a4 e$ W
4. 在“重置DSRM管理员密码:”提示符下输入“Reset Password on server <servername>”,其中<servername>是想修改DSRM管理员密码的服务器名。
+ V- V6 P5 u/ {3 b
1 s( G, p8 s  x; m0 r
5. 在“请键入DS还原模式管理员账户的密码:”提示符下输入新的密码。
# P7 |; l  X4 [0 N8 X; G

6. 确认新的密码。5 {& P1 n# B& h: Z$ Q8 ?4 q6 m


7. 设置密码成功,工具回到“重置DSRM管理员密码:”提示符。$ R" r9 g; j$ z

+ S8 K" n; x, @
8. 输入“quit”返回到ntdsutil命令提示符。


9. 如果不需要执行其他ntdsutil操作,再次输入“quit”退出ntdsutil工具。




本文转自q狼的诱惑 51CTO博客,原文链接:http://blog.51cto.com/liangrui/366130,如需转载请自行联系原作者- p