Windows (获取wmiobject win32_computersystem)。用户名返回无效值

Windows (获取wmiobject win32_computersystem)。用户名返回无效值,windows,powershell,Windows,Powershell,在windows 8.1英语操作系统中,使用Microsoft帐户登录64位PC 当我执行上述命令时,用户名格式如下 // 在windows 8.1中,使用Microsoft帐户登录的日语OS/64位PC 当我执行上述命令时,用户名格式如下 / 注: 系统名称:联想电脑 域名:联想PC 用户名:TestAccount 为什么它在不同的PC环境中返回不同的格式 我的逻辑无法获取当前登录用户的令牌 请帮助任何人。获取用户名的方法有很多。以下是一些例子: (get-wmiobject Win32_Co

在windows 8.1英语操作系统中,使用Microsoft帐户登录64位PC 当我执行上述命令时,用户名格式如下 //

在windows 8.1中,使用Microsoft帐户登录的日语OS/64位PC 当我执行上述命令时,用户名格式如下 /

注: 系统名称:联想电脑 域名:联想PC 用户名:TestAccount

为什么它在不同的PC环境中返回不同的格式

我的逻辑无法获取当前登录用户的令牌


请帮助任何人。

获取用户名的方法有很多。以下是一些例子:

(get-wmiobject Win32_ComputerSystem).username

对于您的特定问题,请尝试以下方法:

$domain = $env:UserDomain
$user = $env:UserName
$username = "$domain\$user"

您正在查找当前登录的用户还是运行PowerShell实例的当前用户?向我们显示在PS中运行时从查询中获得的输出,并告诉我们您的期望值。如果您使用点并只选择用户名,那么它将只返回
Domain\username
。另外,如果您正在运行查询,并且没有指定任何属性,那么它将不会返回username;它将以诽谤的方式返回域、制造商、型号、名称、主要所有者名称、TotalPhysicalmemory<代码>用户名是扩展属性**当前登录的用户**@buttercup@RanadipDutta如果我对他的问题理解正确,他不是在问如何解决这个问题,而是为什么他的实例会输出这个问题。(因为通常不是输出的一部分)@buttercup:ah,我明白了。。那么它就不应该这样,因为它主要是基于观点的。另外,答案是因为它属于同一个dot net类。感谢@buttercup,我担心为什么PC名称会从上面的WMI查询中检索?
$(Get-WMIObject-class Win32\u ComputerSystem |选择用户名)。用户名
(Get-WMIObject Win32\u ComputerSystem)。用户名
将返回相同的值。
whoami
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$domain = $env:UserDomain
$user = $env:UserName
$username = "$domain\$user"