首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PowerShell中获取当前用户名?

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

Stack Overflow用户
提问于 2010-01-18 19:50:33
回答 14查看 719.4K关注 0票数 400

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

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-01-18 19:52:53

我找到了:

代码语言:javascript
运行
复制
$env:UserName

还有:

代码语言:javascript
运行
复制
$env:UserDomain
$env:ComputerName
票数 481
EN

Stack Overflow用户

发布于 2010-01-18 19:54:21

在Windows上,您可以:

代码语言:javascript
运行
复制
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
票数 213
EN

Stack Overflow用户

发布于 2015-04-30 05:49:06

我认为总结和比较给定的答案是有价值的。

如果您想要访问

(更简单/更短/更难忘的选项)

  • [Environment]::UserName -- @ThomasBratt
  • $env:username -- @Eoin
  • whoami -- @galaktor

如果您想要访问

(更可靠的选项)

  • [System.Security.Principal.WindowsIdentity]::GetCurrent().Name -- @MarkSeemann

如果您想要已登录用户的名称

(而不是运行PowerShell实例的用户名)

this other forum上的

  • $(Get-WMIObject -class Win32_ComputerSystem | select username).username -- @TwonOfAn

比较

@Kevin Panko对@Mark Seemann的回答的评论涉及到选择一个类别而不是另一个类别:

Windows访问令牌方法是最安全的答案,因为$env:USERNAME可以由用户更改,但这样做不会欺骗用户。

简而言之,Window环境变量选项更简洁,访问令牌选项更可靠。

我不得不在我通过模拟从C#应用程序运行的PowerShell脚本中使用@Mark Seemann的Windows access token方法。

使用我的用户帐户运行C#应用程序,并将PowerShell脚本作为服务帐户运行。由于我在C#中运行PowerShell脚本的方式的限制,PowerShell实例使用我的用户帐户的环境变量,即使它是作为服务帐户用户运行的。

在此设置中,环境变量选项返回我的帐户名,Windows访问令牌选项返回服务帐户名(这是我想要的),登录用户选项返回我的帐户名。

测试

此外,如果您想自己比较这些选项,这里有一个脚本,您可以使用它以另一个用户的身份运行脚本。您需要使用Get-Credential cmdlet获取凭据对象,然后使用脚本运行此脚本,以另一个用户作为参数1运行,将凭据对象作为参数2运行。

使用:

代码语言:javascript
运行
复制
$cred = Get-Credential UserTo.RunAs
Run-AsUser.ps1 "whoami; pause" $cred
Run-AsUser.ps1 "[System.Security.Principal.WindowsIdentity]::GetCurrent().Name; pause" $cred

Run-AsUser.ps1脚本内容:

代码语言:javascript
运行
复制
param(
  [Parameter(Mandatory=$true)]
  [string]$script,
  [Parameter(Mandatory=$true)]
  [System.Management.Automation.PsCredential]$cred
)

Start-Process -Credential $cred -FilePath 'powershell.exe' -ArgumentList 'noprofile','-Command',"$script"
票数 160
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2085744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档