如何在Windows PowerShell中获取当前用户名?
当前回答
如果你习惯批处理,你可以打电话
$user=$(cmd.exe /c echo %username%)
这基本上窃取了如果你有一个只有“echo %username%”的批处理文件的输出。
其他回答
[Environment]::UserName只返回用户名。例如,鲍勃 [System.Security.Principal.WindowsIdentity]:: GetCurrent()。Name返回用户名,在适当的地方加上域前缀。例如SOMEWHERENICE \鲍勃
我过去使用过$env:username,但同事指出它是一个环境变量,可以由用户更改,因此,如果你真的想获得当前用户的用户名,你不应该相信它。
我赞同马克·西曼的回答: [System.Security.Principal.WindowsIdentity]:: GetCurrent () . name
但是我不被允许。有了Mark的答案,如果你只需要用户名,你可能不得不解析出来,因为在我的系统上,它返回主机名\用户名,在域加入的机器上,它将返回域\用户名。
我不会使用whoami.exe,因为它不是在所有版本的Windows上都存在,而且它是对另一个二进制文件的调用,可能会让一些安全团队感到不适。
只是在其他人工作的基础上:
[String] ${stUserDomain},[String] ${stUserAccount} = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name.split("\")
在我的例子中,我需要检索用户名以使脚本更改路径,即。c: \ \ %的用户名% \用户。我需要通过更改用户桌面的路径来启动脚本。在上面和其他地方的帮助下,我可以通过使用get-location小程序来做到这一点。
你可能有另一种更好的方法,但这对我来说很管用:
$Path = Get-Location
Set-Location $Path\Desktop
$username=( ( Get-WMIObject -class Win32_ComputerSystem | Select-Object -ExpandProperty username ) -split '\\' )[1]
美元的用户名
第二个用户名仅用于复制和粘贴时显示。
推荐文章
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- 从PowerShell ISE中的另一个PS1脚本调用PowerShell脚本PS1
- GIT克隆在windows中跨本地文件系统回购
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- Windows和Linux上的c++编译:ifdef开关
- 如何验证批处理文件中是否存在一个文件?
- PowerShell等价于grep -f
- “Write-Host”,“Write-Output”,或“[console]::WriteLine”之间的区别是什么?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12
- Awk不打印换行符