dsquery user 是什么
dsquery 是 AD DS 自带的传统命令行查询工具族,dsquery user 专门查找用户对象。它的强项是模糊匹配与范围限定:可以只在一个 OU 下按名称前缀找,也可以按 SAM 名精确取。输出是对象 DN 格式的字符串,天然适合管道给 dsget、dsmod、dsrm 接力,实现“查 → 读属性 → 改属性 → 删对象”的一串式操作。
基本信息
| 适用平台 | Windows Server 域控自带;客户端需从 RSAT 安装 |
|---|---|
| 语法 | dsquery user [起始OU] -name 名称* | -samid 账号 |
| 输出格式 | 对象的 DN 字符串,每行一条 |
| 常用配套 | dsget 读属性、dsmod 改属性、dsrm 删除对象 |
| 范围限定 | 把 OU 放在对象参数之前,可只在指定子树里找 |
| 现代替代 | PowerShell 的 Get-ADUser(RSAT 的 ActiveDirectory 模块) |
典型使用场景
- 凭姓名片段找账号,确认 SAM 名与所在 OU
- 接管老脚本:既有工具链都是 ds* 系列,无需重写
- 在指定 OU 子树内做批量查询,避免跨部门同名账号混入
- 把查到的 DN 直接管道给 dsget 读部门、邮箱等信息
- 快速核对某账号是否已在域里,作为建号前检查
常用示例
常用示例
dsquery user -name zhangsan* # 按姓名前缀模糊查
dsquery user "OU=Sales,DC=corp,DC=local" -name * # 只查 Sales 这个 OU 下的全部用户
dsquery user -samid ops01 | dsget user -display -dept -email -disabled # 查到后直接读属性
dsquery user -stalepwd 90 -limit 0 # 找出 90 天没改密码的账号
dsquery user -inactive 4 -limit 0 # 找出 4 周未登录的账号
dsquery user -name * -limit 0 | find /c "CN=" # 统计总用户数
dsquery user -samid ops01 | dsmod user -desc "已离职" # 管道接力改属性输出逐行读法
| 输出形态 | 含义 | 后续用法 |
|---|---|---|
| CN=张三,OU=Sales,DC=corp | 对象的完整 DN | 可管道给 dsget/dsmod/dsrm |
| 多行输出 | 匹配到多个对象 | 建议先限定 OU 缩小范围 |
| 无输出 | 没有匹配项 | 确认名称拼写与查询范围 |
| DN 含逗号与等号 | 标准格式,非报错 | 整体作为参数传给下一命令 |
dsquery 依赖于工具安装:域控上自带,客户端需要装 RSAT。服务器核心版或跨平台排障环境里,用 Get-ADUser 更省事,语法也更适合脚本处理。
默认返回条数有上限,做全量盘点时必须显式加 -limit 0,否则你会拿到一份看着完整、实则被截断的名单。