PowerShell 获取当前用户
使用 Windows 时,你几乎肯定需要知道哪些用户帐户在某个时间主动登录到计算机。值得庆幸的是,PowerShell 可以获取远程或本地计算机上的当前用户。
有许多方法可以在不使用 PowerShell 的情况下检索登录到计算机的当前用户。使用 PowerShell,你还可以通过将结果视为对象来更改结果。
例如,如果你执行询问用户凭据的脚本,PowerShell 可以动态生成用户名,而你只需要手动输入密码。
在 PowerShell 中使用 Win32_ComputerSystem
类获取当前用户
我们将使用 PowerShell cmdlet,即 Get-CimInstance
和 Get-WMIObject
。这些允许我们通过在远程或本地计算机上使用 WMI(Windows Management Instrumentation)类来获取当前用户。在 PowerShell 中调用以下任何寻址 Win32 ComputerSystem 类的 cmdlet 以获取当前用户。
Username
属性是 Win32 ComputerSystem 类的属性之一。为此,请启动 PowerShell 并执行如下所示的命令。
获取 CimInstance:
(Get-CimInstance -ClassName Win32_ComputerSystem).Username
获取 WMIObject:
(Get-WMIObject -ClassName Win32_ComputerSystem).Username
输出:
DESKTOP-DelftStack\DefltStack
这里两个命令得到相同的结果。但需要注意的是,上述命令只在用户直接登录时才会给出结果。如果是远程登录,则用户名将为空。
在 PowerShell 中使用环境变量获取当前用户
使用 PowerShell 在计算机上获取当前用户的另一种技术是从环境变量中检索信息。操作系统数据,例如当前用户的用户名,由环境变量表示。但是,使用环境变量主要有三种方式;无论采用何种方法,它都会得到相同的结果。
三种方式如下。
- 环境 PowerShell 驱动器
$env
变量- .NET 环境类
下面进一步解释上述方法。
环境 PowerShell 驱动器
环境变量由 PowerShell 缓存并通过 Env:
驱动器提供,该驱动器是 PowerShell 驱动器 (PSDrive)。PSDrive 是可以像计算机上的驱动器一样访问的存储位置(例如 C:),但只能通过 PowerShell 访问。
Env:
驱动器会在你启动 PowerShell 会话时自动创建。因为 Env:
是一个驱动器,你可以使用 Get-ChildItem cmdlet 访问其内容,其工作方式类似于列出文件系统文件夹或驱动器的项目。
可以使用以下命令检索用户。
Get-ChildItem Env:\USERNAME
输出
Name Value
---- -----
USERNAME DelftStack
为了仅获取值,可以使用以下命令。
(Get-ChildItem Env:\USERNAME).Value
输出:
DelftStack
可以看出该命令将用户名值作为字符串返回。
$env
变量
另一种方法是将 env 驱动器视为一个变量,你可以在其中使用以下命令:
$env:username
输出:
DelftStack
.NET 环境类
Environment 类确实有一个 Username 字段,它与 $env 变量具有相同的值:当前用户的用户名。执行下面的 PowerShell 命令以获取用户名字段的值。
[System.Environment]::UserName
输出:
DelftStack
.NET WindowsIdentity 类
在 Windows 中执行以获取当前用户的另一个类是 WindowsIdentity 类。它具有 GetCurrentname 方法,可以使用如下所示。
([System.Security.Principal.WindowsIdentity]::GetCurrent().Name).Split('\')[1]
输出:
DelftStack
在 PowerShell 中使用 whoami
命令获取当前用户
whoami
命令是一个可执行文件,位于 %WINDIR%\System32
文件夹中,文件名为 whoami.exe
。当我们运行以下命令时,它会生成域/用户名格式的用户名。
whoami
输出:
DESKTOP-DelftStack\DefltStack
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。