dsquery是一個好命令。它可以用來查詢AD中各種對象。dsquery如果沒查詢到任何結果,將返回一個空行,沒有報錯信息。用法舉例如下:
例1 根據用戶名查用戶帳號
C:\WINDOWS>dsquery user -name gp*
"CN=gp01,OU=staff,DC=domain,DC=com"
"CN=gp02,OU=staff,DC=domain,DC=com"
這裏的user就是指查用戶帳號,也可以換成Computer來查計算機帳號,換成group來查組,或者換成server來查域控制器;-name參數是指根據用戶名來查,*是通配符;
這條命令的意思就是查詢用戶名以gp開頭的所有用戶帳號,並且返回其DN
解釋:DN,Distinguished Name,可辨識名稱,是包含了全路徑的AD對象名稱。格式如下
CN=david,OU=staff,DC=domain,DC=com
這個DN說明的是一個叫david的對象,它位於domain.com域下的一個叫staff的OU中
例2 根據帳號描述(description)來查用戶帳號
我們公司會將用戶的工號放在用戶描述中,常常需要通過工號來查用戶帳號。可以用命令:
C:\WINDOWS>dsqueryuser -desc *00527*
"CN=david,OU=staff,DC=domain,DC=com"
這裏就是查詢description中含有00527的用戶帳號DN,通配符*放在00527的前後各一個,說明只要中間含有00527即滿足條件。
例3 根據狀態查計算機帳號(不再激活n周的計算機帳號)
C:\WINDOWS>dsquerycomputer -inactive 7
"CN=computer01,OU=workstations,DC=domain,DC=com"
-inactive 後面的7說明7周
例4 根據禁用狀態查用戶帳號
C:\WINDOWS>dsqueryuser -disabled
"CN=gp01,OU=staff,DC=domain,DC=com"
"CN=gp02,OU=staff,DC=domain,DC=com"
"CN=david,OU=staff,DC=domain,DC=com"
-disabled 參數用來查被禁用的用戶帳號
例5 查指定域下被禁用的帳號中名字中含有gp的
C:\WINDOWS>dsqueryuser -disabled -name gp* -d domain.com
"CN=gp01,OU=staff,DC=domain,DC=com"
"CN=gp02,OU=staff,DC=domain,DC=com"
-d 後面跟指定的域名
講到這裏大家有沒有注意到,雖然dsquery是一個好命令,但是單獨使用的時候返回的結果看起來很暈。因爲返回的結果都是以DN形式存在的。
要想看的更加清楚,怎麼辦?比如我想返回的結果包括一個簡單的用戶帳號名和該帳號的描述。
dsget命令閃亮登場。
dsget命令可以用來查某個對象的具體屬性。通常我們可以用管道符號將dsquery的結果傳遞給dsget。如果dsquery沒查詢到結果,那麼就沒有參數可以傳遞給dsget,dsget將會返回一次報錯信息。
例6 返回某個用戶的用戶帳號名和描述(查名字中含有gp的用戶)
C:\WINDOWS>dsqueryuser -name gp* | dsget user -samid -desc
desc samid
Group Policy Testaccount gp01
Group Policy Test account no.2 gp02
dsget succeeded
這裏的samid就是Windows下的傳統用戶名。desc列下的就是描述
例7 作爲例6的進一步,我們加上一個參數,用來列出帳號是否被禁用
C:\WINDOWS>dsqueryuser -name gp* | dsget user -samid -desc -disabled
desc samid disabled
Group Policy Testaccount gp01 yes
Group Policy Test account no.2 gp02 yes
dsget succeeded
-disabled列出是否禁用的狀態,yes表示該帳號已經被禁用,no表示未禁用。
例8 查某個用戶組(查名字中含有cap字符串的所有Group)
C:\WINDOWS>dsquerygroup -name *cap* -d domain.com | dsget group -samid -secgrp -scope
samid scope secgrp
WG_CAP universal yes
DCApps global yes
dsget succeeded
-secgrp 判斷是否security group,若No則爲Distribution Group
-scope顯示是Domain Local組,Global組或者universal組
-samid顯示組名
例9 查域中的域控制器中哪臺是GC(Global Catagory)服務器
C:\WINDOWS>dsqueryserver -d domain.com | dsget server -dnsname -isgc
dnsname isgc
CNDC01.domain.com yes
CNDC02.domain.com no
dsget succeeded
最後,列一條很有用的命令
例10 查FSMO角色服務器
netdom query fsmo /d:[domainname]
C:\WINDOWS>netdomquery fsmo /d:domain.com
Schemaowner CNDC01.domain.com
Domain role owner CNDC01.domain.com
PDCrole CNDC01.domain.com
RID poolmanager CNDC01.domain.com
Infrastructure owner CNDC02.domain.com
The command completed successfully.