如何在Windows PowerShell中获取当前用户名?


当前回答

如果你习惯批处理,你可以打电话

$user=$(cmd.exe /c echo %username%)

这基本上窃取了如果你有一个只有“echo %username%”的批处理文件的输出。

其他回答

我过去使用过$env:username,但同事指出它是一个环境变量,可以由用户更改,因此,如果你真的想获得当前用户的用户名,你不应该相信它。

我赞同马克·西曼的回答: [System.Security.Principal.WindowsIdentity]:: GetCurrent () . name

但是我不被允许。有了Mark的答案,如果你只需要用户名,你可能不得不解析出来,因为在我的系统上,它返回主机名\用户名,在域加入的机器上,它将返回域\用户名。

我不会使用whoami.exe,因为它不是在所有版本的Windows上都存在,而且它是对另一个二进制文件的调用,可能会让一些安全团队感到不适。

如果你习惯批处理,你可以打电话

$user=$(cmd.exe /c echo %username%)

这基本上窃取了如果你有一个只有“echo %username%”的批处理文件的输出。

我找到了:

$env:UserName

还有:

$env:UserDomain
$env:ComputerName

我发现最容易使用的:cd $home\Desktop\

会转到当前用户桌面吗

在我的例子中,我需要检索用户名以使脚本更改路径,即。c: \ \ %的用户名%的用户。我需要通过更改用户桌面的路径来启动脚本。在上面和其他地方的帮助下,我可以通过使用get-location小程序来做到这一点。

你可能有另一种更好的方法,但这对我来说很管用:

$Path =获取位置

Set-Location \ $ Path桌面

$username=( ( Get-WMIObject -class Win32_ComputerSystem | Select-Object -ExpandProperty username ) -split '\\' )[1]

美元的用户名

第二个用户名仅用于复制和粘贴时显示。