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.