(Get-wmiobject win32_computersystem).username возвращает недопустимое значение

#windows #powershell

#Windows #powershell

Вопрос:

В Windows 8.1 английская ОС / 64-разрядный КОМПЬЮТЕР, вошедший в систему с учетной записью Microsoft, когда я выполняю приведенную выше команду, формат имени пользователя будет следующим //

В Windows 8.1 Японская ОС / 64-разрядный КОМПЬЮТЕР, вошедший в систему с учетной записью Microsoft, когда я выполняю приведенную выше команду, формат имени пользователя будет следующим /

Примечание: Имя системы: lenovo-PC Доменное имя: LENOVO-PC Имя пользователя: TestAccount

Почему он возвращает другой формат на другом компьютере с окружающей средой?

Моей логике не удается получить токен для текущего зарегистрированного пользователя.

Пожалуйста, помогите кому-нибудь.

Комментарии:

1. Вы ищете текущего пользователя, вошедшего в систему, или текущего пользователя, который запускает ваш экземпляр PowerShell?

2. Покажите нам результат, который вы получаете от запроса при запуске в PS, а также сообщите нам свои ожидания. Если вы используете точку и выбираете только username, то оно будет возвращено только Domainusername . Также, если вы выполняете запрос и не указываете какое-либо свойство, он не вернет username; он вернет Domain,Manufacturer,Model, Name, PrimaryOwnerName,TotalPhysicalMemory по умолчанию. username является расширенным свойством

3. ** Текущий пользователь, вошедший в систему **@buttercup

4. @RanadipDutta Если я правильно понял его вопрос, он спрашивает не о том, как это исправить, а о том, почему его экземпляр выводит это. (потому что обычно <имясистемы> не является частью вывода)

5. @buttercup: Ах, я понимаю .. тогда этого не должно быть в SO, потому что это в первую очередь основано на мнении. Кроме того, ответ заключается в том, что он принадлежит к тому же классу dot net .

Ответ №1:

Существует много способов получить имя пользователя. Вот несколько примеров:

 (get-wmiobject Win32_ComputerSystem).username
 

или

 [Environment]::UserName
 

или

 whoami
 

или

 [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
 

Для вашей конкретной проблемы попробуйте следующее:

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

Комментарии:

1. Спасибо @buttercup я беспокоился, почему имя ПК извлекается из приведенного выше запроса WMI?

2. $(Get-WMIObject -class Win32_ComputerSystem | select username).username и (Get-wmiobject win32_computersystem).username вернет то же значение.