如何在Windows PowerShell中获取当前用户名?
当前回答
我发现最容易使用的:cd $home\Desktop\
会转到当前用户桌面吗
在我的例子中,我需要检索用户名以使脚本更改路径,即。c: \ \ %的用户名%的用户。我需要通过更改用户桌面的路径来启动脚本。在上面和其他地方的帮助下,我可以通过使用get-location小程序来做到这一点。
你可能有另一种更好的方法,但这对我来说很管用:
$Path =获取位置
Set-Location \ $ Path桌面
其他回答
我发现最容易使用的:cd $home\Desktop\
会转到当前用户桌面吗
在我的例子中,我需要检索用户名以使脚本更改路径,即。c: \ \ %的用户名%的用户。我需要通过更改用户桌面的路径来启动脚本。在上面和其他地方的帮助下,我可以通过使用get-location小程序来做到这一点。
你可能有另一种更好的方法,但这对我来说很管用:
$Path =获取位置
Set-Location \ $ Path桌面
有时,Username属性在Win32_ComputerSystem中没有数据,即使有用户登录。对我来说有用的是使用quser并解析输出。这并不完美,但很有效。例如:
$quserdata = @()
$quserdata = quser
$userid = ($quserdata[1] -split ' ')[1]
$userid
注意:如果以登录用户的身份运行,quser会在输出中添加'>'符号。然后您需要删除该符号,但这主要用于作为系统或其他帐户运行的代码,而不是登录的帐户。
我没有看到任何基于Add-Type的例子。这里是一个使用GetUserName直接从advapi32.dll。
$sig = @'
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool GetUserName(System.Text.StringBuilder sb, ref Int32 length);
'@
Add-Type -MemberDefinition $sig -Namespace Advapi32 -Name Util
$size = 64
$str = New-Object System.Text.StringBuilder -ArgumentList $size
[Advapi32.util]::GetUserName($str, [ref]$size) |Out-Null
$str.ToString()
我找到了:
$env:UserName
还有:
$env:UserDomain
$env:ComputerName
在Windows上,你可以:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
推荐文章
- 我如何找到哪个程序正在使用端口80在Windows?
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何在Windows命令提示符下运行.sh ?
- 如何在PowerShell中获得本地主机名?
- 如何从命令行在windows中找到mysql数据目录
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- PowerShell:如何将数组对象转换为PowerShell中的字符串?
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- 从PowerShell ISE中的另一个PS1脚本调用PowerShell脚本PS1
- GIT克隆在windows中跨本地文件系统回购
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 是否有一种方法可以通过双击.ps1文件来使PowerShell脚本工作?
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?