在 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

等效命令:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name

2. WHOAMI /UPN (User Principal Name)

获取当前用户的 UPN (通常为 username@domain.com 格式),可以使用:

powershellCopy Code
(Get-WmiObject -Class Win32_ComputerSystem).UserName

或者:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name

3. WHOAMI /FQDN (Fully Qualified Domain Name)

获取当前计算机的 FQDN (完整域名),可以使用:

powershellCopy Code
([System.Net.Dns]::GetHostEntry($env:COMPUTERNAME)).HostName

4. WHOAMI /LOGONID

获取当前用户的登录 ID,可以通过 Get-WmiObject 命令来获取:

powershellCopy Code
(Get-WmiObject -Class Win32_ComputerSystem).UserName

或者使用:

powershellCopy Code
$env:USERDOMAIN + "\" + $env:USERNAME

5. WHOAMI /USER

获取当前用户的 SID 和用户名:

powershellCopy Code
whoami /USER

在 PowerShell 中的等效命令:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value

6. WHOAMI /USER /FO LIST

获取用户的 SID 和其他详细信息并以列表形式显示:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List

7. WHOAMI /USER /FO CSV

将用户 SID 和其他信息以 CSV 格式显示:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Select-Object * | Export-Csv -Path "user_info.csv" -NoTypeInformation

8. WHOAMI /GROUPS

列出当前用户的所有组信息:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

9. WHOAMI /GROUPS /FO CSV /NH

以 CSV 格式并且不包含表头,列出当前用户的所有组信息:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | Select-Object -Property Value | Export-Csv -Path "user_groups.csv" -NoTypeInformation

10. WHOAMI /CLAIMS

列出用户的声明:

PowerShell 本身没有一个内建的命令来直接查看声明。可以使用 Get-ADUserGet-ADUserCertificate 等 Active Directory 命令来获取类似的信息(需要 Active Directory 模块)。

11. WHOAMI /CLAIMS /FO LIST

列出用户的声明并以列表格式显示(使用 AD 模块):

powershellCopy Code
Get-ADUser -Identity $env:USERNAME -Properties * | Select-Object -Property DistinguishedName, ClaimTypes

12. WHOAMI /PRIV

列出当前用户的权限信息:

powershellCopy Code
whoami /priv

PowerShell 等效:

powershellCopy Code
$privileges = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
$privileges | ForEach-Object { $_.Value }

13. WHOAMI /PRIV /FO TABLE

以表格格式列出当前用户的权限信息:

powershellCopy Code
$privileges = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
$privileges | Format-Table -Property Value

14. WHOAMI /USER /GROUPS

列出当前用户的信息及其所属组:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

15. WHOAMI /USER /GROUPS /CLAIMS /PRIV

列出当前用户的信息、组信息、声明和权限:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
# 需要查询 Active Directory 声明及权限

16. WHOAMI /ALL

列出所有用户信息、组、声明、权限等:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List *

17. WHOAMI /ALL /FO LIST

以列表形式列出所有详细信息:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Format-List *

18. WHOAMI /ALL /FO CSV /NH

以 CSV 格式列出所有详细信息,并且没有表头:

powershellCopy Code
[System.Security.Principal.WindowsIdentity]::GetCurrent() | Select-Object * | Export-Csv -Path "user_info.csv" -NoTypeInformation

以上是对应 whoami 命令不同选项在 PowerShell 中的实现方法。根据需要,你可以选择适合的命令来获取当前用户的信息、组信息、声明、权限等。

 

posted @ 2025-04-25 16:49  suv789  阅读(70)  评论(0)    收藏  举报