在 PowerShell 中实现与 whoami 命令的不同选项类似功能,可以通过使用不同的命令和方法来获得用户信息、组信息、声明和权限等。下面列出对应的 PowerShell 实现方式:
C:\Program Files\RegMerge>whoami /?
WhoAmI 有三种使用方法:
语法 1:
WHOAMI [/UPN | /FQDN | /LOGONID]
语法 2:
WHOAMI { [/USER] [/GROUPS] [/CLAIMS] [/PRIV] } [/FO format] [/NH]
语法 3:
WHOAMI /ALL [/FO format] [/NH]
描述:
这个工具可以用来获取本地系统上当前用户(访问令牌)的用户名和组信息,以及相应的安全标识符(SID)、声明、本地系统上当前用户的权限、登录标识符(登录 ID)。例如,谁是当前已登录的用户?
格式(域\用户名)。
参数列表:
WHOAMI /UPN 用用户主体 (User Principal) 格式显示用户名名称 (UPN)格式。
WHOAMI /FQDN 用完全合格的 (Fully Qualified) 格式显示用户名可分辨名称(FQDN) 格式。
WHOAMI /USER 显示当前用户的信息以及安全标识符 (SID)。
WHOAMI /GROUPS 显示当前用户的组成员信息、帐户类型和安全标识符 (SID) 和属性。
WHOAMI /CLAIMS 显示当前用户的声明,包括声明名称、标志、类型和值。
WHOAMI /PRIV 显示当前用户的安全特权
。
WHOAMI /LOGONID 显示当前用户的登录 ID。
WHOAMI /ALL 显示当前用户名、所属的组以及安全等级当前用户访问令牌的标识符(SID)、声明和权限。
WHOAMI /FO format 指定要显示的输出格式。有效值为 TABLE、LIST、CSV。列标题未使用 CSV格式显示。默认格式为 TABLE。
WHOAMI /NH 指定不应在输出中显示列标题。此参数仅对TABLE 和 CSV 格式有效。
WHOAMI /? 显示此帮助消息。
Examples:
WHOAMI
WHOAMI /UPN
WHOAMI /FQDN
WHOAMI /LOGONID
WHOAMI /USER
WHOAMI /USER /FO LIST
WHOAMI /USER /FO CSV
WHOAMI /GROUPS
WHOAMI /GROUPS /FO CSV /NH
WHOAMI /CLAIMS
WHOAMI /CLAIMS /FO LIST
WHOAMI /PRIV
WHOAMI /PRIV /FO TABLE
WHOAMI /USER /GROUPS
WHOAMI /USER /GROUPS /CLAIMS /PRIV
WHOAMI /ALL
WHOAMI /ALL /FO LIST
WHOAMI /ALL /FO CSV /NH
WHOAMI /?
C:\Program Files\RegMerge>whoami /priv
特权信息
----------------------
特权名 描述 状态
========================================= ================================== ======
SeIncreaseQuotaPrivilege 为进程调整内存配额 已禁用
SeSecurityPrivilege 管理审核和安全日志 已禁用
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 已禁用
SeLoadDriverPrivilege 加载和卸载设备驱动程序 已禁用
SeSystemProfilePrivilege 配置文件系统性能 已禁用
SeSystemtimePrivilege 更改系统时间 已禁用
SeProfileSingleProcessPrivilege 配置文件单一进程 已禁用
SeIncreaseBasePriorityPrivilege 提高计划优先级 已禁用
SeCreatePagefilePrivilege 创建一个页面文件 已禁用
SeBackupPrivilege 备份文件和目录 已禁用
SeRestorePrivilege 还原文件和目录 已禁用
SeShutdownPrivilege 关闭系统 已禁用
SeDebugPrivilege 调试程序 已禁用
SeSystemEnvironmentPrivilege 修改固件环境值 已禁用
SeChangeNotifyPrivilege 绕过遍历检查 已启用
SeRemoteShutdownPrivilege 从远程系统强制关机 已禁用
SeUndockPrivilege 从扩展坞上取下计算机 已禁用
SeManageVolumePrivilege 执行卷维护任务 已禁用
SeImpersonatePrivilege 身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege 创建全局对象 已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集 已禁用
SeTimeZonePrivilege 更改时区 已禁用
SeCreateSymbolicLinkPrivilege 创建符号链接 已禁用
SeDelegateSessionUserImpersonatePrivilege 获取同一会话中另一个用户的模拟令牌 已禁用
在 PowerShell 中实现与 whoami 命令的不同选项类似功能,可以通过使用不同的命令和方法来获得用户信息、组信息、声明和权限等。下面列出对应的 PowerShell 实现方式:
1. WHOAMI
等效命令:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
2. WHOAMI /UPN (User Principal Name)
获取当前用户的 UPN (通常为 username@domain.com 格式),可以使用:
(Get-WmiObject -Class Win32_ComputerSystem).UserName
或者:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
3. WHOAMI /FQDN (Fully Qualified Domain Name)
获取当前计算机的 FQDN (完整域名),可以使用:
([System.Net.Dns]::GetHostEntry($env:COMPUTERNAME)).HostName
4. WHOAMI /LOGONID
获取当前用户的登录 ID,可以通过 Get-WmiObject 命令来获取:
(Get-WmiObject -Class Win32_ComputerSystem).UserName
或者使用:
$env:USERDOMAIN + "\" + $env:USERNAME
5. WHOAMI /USER
获取当前用户的 SID 和用户名:
whoami /USER
在 PowerShell 中的等效命令:
[System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
6. WHOAMI /USER /FO LIST
获取用户的 SID 和其他详细信息并以列表形式显示:
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List
7. WHOAMI /USER /FO CSV
将用户 SID 和其他信息以 CSV 格式显示:
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Select-Object * | Export-Csv -Path "user_info.csv" -NoTypeInformation
8. WHOAMI /GROUPS
列出当前用户的所有组信息:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
9. WHOAMI /GROUPS /FO CSV /NH
以 CSV 格式并且不包含表头,列出当前用户的所有组信息:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | Select-Object -Property Value | Export-Csv -Path "user_groups.csv" -NoTypeInformation
10. WHOAMI /CLAIMS
列出用户的声明:
PowerShell 本身没有一个内建的命令来直接查看声明。可以使用 Get-ADUser 和 Get-ADUserCertificate 等 Active Directory 命令来获取类似的信息(需要 Active Directory 模块)。
11. WHOAMI /CLAIMS /FO LIST
列出用户的声明并以列表格式显示(使用 AD 模块):
Get-ADUser -Identity $env:USERNAME -Properties * | Select-Object -Property DistinguishedName, ClaimTypes
12. WHOAMI /PRIV
列出当前用户的权限信息:
whoami /priv
PowerShell 等效:
$privileges = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
$privileges | ForEach-Object { $_.Value }
13. WHOAMI /PRIV /FO TABLE
以表格格式列出当前用户的权限信息:
$privileges = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
$privileges | Format-Table -Property Value
14. WHOAMI /USER /GROUPS
列出当前用户的信息及其所属组:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
15. WHOAMI /USER /GROUPS /CLAIMS /PRIV
列出当前用户的信息、组信息、声明和权限:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
# 需要查询 Active Directory 声明及权限
16. WHOAMI /ALL
列出所有用户信息、组、声明、权限等:
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List *
17. WHOAMI /ALL /FO LIST
以列表形式列出所有详细信息:
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List *
18. WHOAMI /ALL /FO CSV /NH
以 CSV 格式列出所有详细信息,并且没有表头:
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Select-Object * | Export-Csv -Path "user_info.csv" -NoTypeInformation
以上是对应 whoami 命令不同选项在 PowerShell 中的实现方法。根据需要,你可以选择适合的命令来获取当前用户的信息、组信息、声明、权限等。

浙公网安备 33010602011771号