首页/系统/Windows 运维速查/whoami 当前身份与权限
CMD 常用命令74 条

whoami 当前身份与权限

显示当前登录用户与令牌细节:/groups 看组成员、/priv 看特权、/user 看 SID,排“权限不够”必用。

Windows 运维速查系统更新于 2026-10-13

whoami 是什么

whoami 显示当前进程所用的账户身份,并可展开查看 SID、所属组与所持特权。它与其他工具的关键区别是:它看的是「进程令牌」而不是「谁登录了机器」——同一个人通过 UAC 提权前后,whoami /groups 的结果就不一样。排查「权限不够」「服务以谁的身份跑」「令牌里到底有没有管理组」这类问题时,它是最直接的证据来源。

基本信息

适用平台Windows Vista 及以后(含 10/11、Server),CMD 与 PowerShell 通用
语法whoami [/user] [/groups] [/priv] [/all] [/fqdn] [/upn] [/fo 格式]
常用开关/user 显示 SID、/groups 显示组成员、/priv 显示特权、/all 全量输出
扩展参数/fqdn 以域\用户全称显示、/upn 显示用户主体名、/nh 去掉表头、/fo csv|table|list
权限要求普通用户即可;查看自身令牌不需要提权

典型使用场景

  • 服务排障:确认服务进程实际以 SYSTEM、NetworkService 还是域账户身份运行
  • 权限核查:比对提权与未提权窗口的组成员差异,解释「同样的操作两个窗口结果不同」
  • 特权确认:安装、卸载、备份类操作前确认令牌里是否有对应特权
  • 脚本自检:脚本开头记录当前身份,出问题时可回溯是哪个账户在跑
  • 域内巡检:用 /fqdn 明确是本域账户还是本机账户、还是来自其他域

常用示例

常用示例
whoami                                    # 当前账户(域\用户名或主机名\用户名)
whoami /user                              # 当前账户的 SID
whoami /groups                            # 列出所属组、SID 与启用状态
whoami /priv                              # 列出令牌中的特权与开关状态
whoami /all                               # 用户 + 组 + 特权 + 完整性级别
whoami /groups | findstr /i "Administrators"   # 只关心是否在管理组
whoami /priv | findstr /i "SeDebug"            # 排查调试权限是否存在
whoami /fqdn                              # 域环境下的完整标识
whoami /groups /fo csv /nh                # 便于脚本解析的成分数据

输出逐列读法

列/字段含义异常或易误读
用户名进程令牌对应的账户提权窗口与普通窗口可能显示同一个名字
SID账户唯一安全标识符域账户以 S-1-5-21- 开头,本机账户含机器 SID
组名与类型安全组(Security)或别名,如 Administrators中文系统显示为「BUILTIN\Administrators」等本地化名称
属性组在令牌中的状态:必需、已启用、已禁用、仅用于拒绝UAC 未提权时管理组显示「仅用于拒绝」,属正常现象
特权如 SeShutdownPrivilege、SeBackupPrivilege、SeDebugPrivilege显示「已禁用」不代表没有该特权,可能只是默认关闭
UAC 是过滤令牌机制:标准用户登录管理员账户时,进程令牌里的 Administrators 会以「仅用于拒绝」出现,这不是账户出了问题,而是令牌被降权;提权窗口中同一项会变成「已启用」。
whoami 反映的是当前进程令牌,不是机器上的登录会话列表。要看「有谁登录了这台机器」用 query user,要看「近期登录记录」用事件日志 4624/4648。

看清真实身份的其它视角

看清真实身份的其它视角
whoami.exe                                # PowerShell 里也可直接调用
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name          # .NET 口径的账户名
[System.Security.Principal.WindowsIdentity]::GetCurrent().IsSystem      # 是否 SYSTEM
echo %username% %userdomain%              # 环境变量口径,注意它可能被脚本改动
排查服务身份时不要只看服务属性页里配置的账户:那只是配置,真正生效要看进程令牌。用 whoami 在该服务的运行上下文里执行,或查看服务进程所属账户,才能确认实际身份。

易错点

  • 把 UAC 过滤令牌中「仅用于拒绝」的 Administrators 当成账户权限异常,白折腾一圈;提权后即可看到「已启用」
  • 用 whoami 回答「谁登录了服务器」:它只反映当前进程身份,多用户会话要用 query user 或事件日志
  • 脚本依赖 whoami /groups 的中文输出做字符串匹配,英文系统或精简版系统上直接失配
  • 只看服务配置里写的登录账户就下结论,实际生效的可能是组托管服务账户或 SYSTEM,需以进程令牌为准

数据来源与参考

  • Microsoft Learn:whoami 命令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌