Powershell — войдите в систему пользователя на удаленном хосте и сохраните имя пользователя как переменную

Попытка использовать Get-WmiObject для получения текущего или последнего имени пользователя, вошедшего в систему на удаленном компьютере, а затем сохранить это значение в переменной, чтобы позже я мог использовать его как часть пути.

Я пытаюсь это сделать, но моя переменная просто пуста. Любые идеи? Заранее спасибо.

$gottenUserName = (Get-WmiObject -ComputerName $thaTargetHost -Namespace root\cimv2 -Class Win32_ComputerSystem)[0].UserName;

person superKing    schedule 01.07.2014    source источник


Ответы (1)


Удалите индексную часть ([0]) в конце, так как она не нужна при использовании этого класса. Вы получите только одно значение из Win32_ComputerSystem.

$gottenUserName = (Get-WmiObject -ComputerName $thaTargetHost -Namespace root\cimv2 -Class Win32_ComputerSystem).UserName
person boeprox    schedule 01.07.2014
comment
Я все еще не получаю никакого значения - person superKing; 01.07.2014
comment
Когда вы просто запрашиваете Win32_ComputerSystem, появляется ли что-нибудь в свойстве Username? Get-WmiObject -ComputerName $thaTargetHost -Class Win32_ComputerSystem | Select Username - person boeprox; 01.07.2014
comment
Win32_ComputerSystem не имеет свойства UserName - person Adil Hindistan; 01.07.2014
comment
Да, это так. См. это. Описание объекта находится внизу страницы. - person boeprox; 01.07.2014
comment
Ах, это не одно из свойств, которое отображается, но оно точно есть. Спасибо @boeprox - person Adil Hindistan; 01.07.2014
comment
Если я запускаю это так, я просто получаю имя пользователя -------- - person superKing; 01.07.2014
comment
если я запускаю его как $gottenUsername = Get-WmiObject -ComputerName $thaTargetHost -Class Win32_ComputerSystem | Select Username, он сохраняет значение как @{Username=} - person superKing; 01.07.2014
comment
Похоже, что свойство просто не имеет значения в момент запуска команды. Вы должны найти систему, в которой, как вы знаете, кто-то вошел в систему (например, ваш собственный компьютер), и снова запустить мою команду, чтобы посмотреть, что произойдет. - person boeprox; 01.07.2014
comment
хорошо, в этот раз это работает, но в переменной хранится строка @{Username=DOMAIN\username (домен и имя пользователя отображаются правильно, я отредактировал их из соображений конфиденциальности). Есть ли способ, которым я могу просто сохранить username в переменной? Кроме того, есть ли способ получить последнего вошедшего в систему пользователя, чтобы он работал, даже если пользователь не в сети? Спасибо еще раз. - person superKing; 02.07.2014
comment
Попробуйте это: $gottenUserName = ((Get-WmiObject -ComputerName $thaTargetHost -Namespace root\cimv2 -Class Win32_ComputerSystem).UserName -split '\\')[1] - person boeprox; 02.07.2014