Как в PowerShell узнать имя пользователя
В операционной системе Windows и Windows Server можно выделить различные типы пользователей:
- пользователь, выполнивший вход в систему
- зарегистрированный владелец установленной ОС и имя зарегистрированного пользователя операционной системы
- имеющиеся учётные записи в данной ОС
Рассмотрим, как получить имя каждого вида пользователя.
Как узнать имя пользователя, выполнившего вход
Самым очевидным кажется способ обратиться к переменной окружения:
$env:UserName
Дополнительно могут заинтересовать ещё парочка переменных окружения. В следующей содержится имя компьютера или имя домена, если компьютер является частью домена.
$env:UserDomain
А эта команда выведет имя компьютера:
$env:ComputerName
Недостаток этого метода в том, что пользователь может подделать значение переменной окружения %UserName%.
Смотрите также: Работа с переменными окружения в PowerShell
Ещё одним недостатком может быть то, что, возможно, вам нужно имя пользователя вида «ДОМЕН\ПОЛЬЗОВАТЕЛЬ» или «КОМПЬЮТЕР\ПОЛЬЗОВАТЕЛЬ».
Этого недостатка лишена следующая команда, которая выведет полное имя пользователя, вместе с компьютером или доменом, к которому данный пользователь относится:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Ещё одним способом получить имя пользователя в PowerShell является команда:
Get-ComputerInfo -Property CsUserName
Пример вывода:
CsUserName ---------- HACKWARE-WINDOW\MiAl
Если вы хотите более компактный вывод, то используйте следующий синтаксис:
(Get-ComputerInfo).CsUserName
Пример вывода:
HACKWARE-WINDOW\MiAl
Как вывести список всех пользователей Windows
Чтобы просмотреть список всех учётных записей, используйте командлет:
Get-LocalUser
Чтобы показать только имена, используйте синтаксис:
(Get-LocalUser).Name
Чтобы вывести только активные учётные записи, используйте команду:
Get-LocalUser | Where-Object {$_.Enabled -eq "True"}
Следующая команда покажет только имена активных учётных записей:
(Get-LocalUser | Where-Object {$_.Enabled -eq "True"}).Name
Владельцы и зарегистрированные пользователи Windows
Вы можете найти информацию о других видах пользователей:
Get-ComputerInfo -Property WindowsRegisteredOwner Get-ComputerInfo -Property CsPrimaryOwnerName Get-ComputerInfo -Property OsRegisteredUser
Значения следующие:
- WindowsRegisteredOwner — имя зарегистрированного владельца этой установки Windows из реестра Windows.
- CsPrimaryOwnerName — имя основного владельца системы
- OsRegisteredUser — имя зарегистрированного пользователя операционной системы
Справка по полям Get-ComputerInfo: https://docs.microsoft.com/en-us/dotnet/api/microsoft.powershell.commands.computerinfo
Универсальная команда whoami
Следующая команда покажет имя пользователя как в PowerShell, так и в CMD:
whoami
Имя пользователя она берёт из переменной окружения.
Варианты использования:
Write-Host "Текущий пользователь:" Write-Host $(whoami)
Ещё один пример:
Write-Host "Текущий пользователь: " -NoNewline; Write-Host $(whoami)
Смотрите также: Аналог echo в PowerShell
Как получить полное имя пользователя
Смотрите статью: Как в PowerShell и CMD вывести полное имя пользователя в домене и рабочей станции
Я хочу получить имя пользователя, не то имя которое латиницей, а имя пользователя которое прописывается русскими буквами. Его видно в панели управления строчкой выше над именем учетной записи которая прописана латиницей. Или в меню пуск наведя на значек учетной записи.
Как этот параметр получить в PowerShell ?
Приветствую! Вопрос интересный, ответ на него в разделе «Как получить полное имя пользователя».