DSquery

dsquery是一个命令行工具,可以用来查询活动目录中符合指定搜索条件的对象。dsquery有多个子命令,每个子命令可以查询一种特定类型的对象,例如用户、组、计算机、OU等。除了dsquery *,它可以查询任何类型的对象。dsquery是Windows Server 2003以后的版本中自带的工具,如果安装了Active Directory Domain Services (AD DS)服务器角色,就可以使用它。

获取域中的用户列表

dsquery user -limit 0

获取域中的组列表

dsquery group "cn=users, dc=dc, dc=com"

获取域中的管理员列表

dsquery group -name "Domain Admins" | dsget group -members | dsget user -samid -email

这将返回类似以下的输出:

samid           email
Administrator   admin@example.com
John            john@example.com
...

获取用户所属的组列表

dsquery user -name John | dsget user -memberof -expand | dsget group -samid

这将返回类似以下的输出:

samid
Domain Admins
Domain Users
pp_admins
...

获取输入的用户的ID

dsquery user -name John | dsget user -uid -gid

这将返回类似以下的输出:

uid     gid
john    Domain Users

添加新用户到域

# 添加一个名为“Bob”的用户,密码为“P@ssw0rd”,邮箱为“bob@example.com”,并将其加入到“Domain Users”和“pp_users”两个组中
dsadd user "CN=Bob,OU=Users,DC=example,DC=com" -pwd P@ssw0rd -email bob@example.com -memberof "CN=Domain Users,CN=Users,DC=example,DC=com" "CN=pp_users,OU=Desktops,DC=example,DC=com"

删除域中的用户

dsrm "CN=Bob,OU=Users,DC=example,DC=com"

获取域中的操作系统列表

dsquery computer -name * | dsget computer -dn -os

这将返回类似以下的输出:

dn                                      os
"CN=DC1,OU=Domain Controllers,DC=example,DC=com"    Windows Server 2012 R2 Standard
"CN=DC2,OU=Domain Controllers,DC=example,DC=com"    Windows Server 2012 R2 Standard
"CN=PC1,OU=Desktops,DC=example,DC=com"              Windows 10 Pro
"CN=PC2,OU=Desktops,DC=example,DC=com"              Windows 10 Pro
...

获取域中的站点名称列表

dsquery site -name *

这将返回类似以下的输出:

"CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com"
"CN=Site1,CN=Sites,CN=Configuration,DC=example,DC=com"
"CN=Site2,CN=Sites,CN=Configuration,DC=example,DC=com"
...

获取站点中所有子网的列表

dsquery subnet -site Site1 | dsget subnet -name -site

这将返回类似以下的输出:

name            site
192.168.1.0/24  Site1
192.168.2.0/24  Site1
...

获取网站内的服务列表

dsquery server -site Site1 | dsget server -dn -isgc -dnsname -site

这将返回类似以下的输出:

dn                                      isgc    dnsname        site
"CN=DC1,OU=Domain Controllers,DC=example,DC=com"    yes     dc1.example.com   Site1
"CN=DC2,OU=Domain Controllers,DC=example,DC=com"    no      dc2.example.com   Site1
...

获取域中的服务器列表

dsquery server -o rdn | for /f %i in ('more') do @nslookup %i

这将返回类似以下的输出:

 Server:   dc1.example.com
 Address:   ::1

 Name:     dc1.example.com
 Address:   fe80::a00:27ff:fe9a:8c5f

 Server:   dc2.example.com
 Address:   ::1

 Name:     dc2.example.com
 Address:   fe80::a00:27ff:fe9a:8c5f

 ...

获取站点中的域控制器列表

dsquery server -site Site1 | dsget server -dnsname | for /f %i in ('more') do @nslookup %i

这将返回类似以下的输出:

 Server:   dc1.example.com
 Address:   ::1

 Name:     dc1.example.com
 Address:   fe80::a00:27ff:fe9a:8c5f

 Server:   dc2.example.com