Как в 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


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *