Как в PowerShell и CMD вывести полное имя пользователя в домене и рабочей станции


Оглавление

1. Как найти полное имя пользователя на локальном компьютере

1.1 net user $env:USERNAME

1.2 Get-WMIObject Win32_UserAccount

1.3 [adsi]

1.4 Вывод имени пользователя в CMD

1.5 Полное имя пользователя в реестре Windows

2. Как получить отображаемое имя текущего пользователя Windows из командной строки (для компьютеров являющихся частью домена)

2.1 net user $env:USERNAME

2.2 Get-WMIObject Win32_UserAccount

2.3 [adsi]


2.4 Вывод имени пользователя в CMD

2.5 Полное имя пользователя в реестре Windows

2.6 [adsi] и LDAP

2.7 Add-Type

Заключение


В заметке Как в PowerShell узнать имя пользователя рассказывается, как вывести имя пользователя — то, что пользователь использует для входа в ОС Windows.

Кроме имени пользователя которое используется как логин, также пользователь может указать своё настоящее имя и фамилию, эти данные в системе хранятся как FullName.

Могут быть различные ситуации, например, локальная учётная запись или учётная запись Microsoft; компьютер может находиться в рабочей группе или быть частью домена Active Directory. Данная статья охватывает случаи получения полного имени пользователя для компьютеров являющихся частью рабочей станции или частью домена. Показанные способы не проверялись для пользователей с учётной записью Microsoft.

1. Как найти полное имя пользователя на локальном компьютере

1.1 net user $env:USERNAME

Поиск полного имени пользователя в PowerShell:

((net user $env:USERNAME | Select-String "Full Name") -replace "Full Name","").Trim()

1.2 Get-WMIObject Win32_UserAccount

Следующие команды найдут полное имя пользователя в PowerShell:

$user = whoami
Get-WMIObject Win32_UserAccount | Where-Object caption -eq $user | Select-Object FullName

Если вам не нужна шапка таблицы, а нужно только имя пользователя, то используйте следующую версию:

$user = whoami
Get-WMIObject Win32_UserAccount | Where-Object caption -eq $user | Select-Object FullName | Format-Table -hide

1.3 [adsi]

Пусть вас не смущает название переменной $dom — данный способ является универсальным и работает как для доменов, так и для рабочих станций:

$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").Fullname

1.4 Вывод имени пользователя в CMD

Поиск полного имени пользователя в CMD

net user "%USERNAME%" | FIND /I "Full Name"


1.5 Полное имя пользователя в реестре Windows

Следующий скрипт получит отображаемое имя текущего пользователя независимо от того, находится ли он на компьютере, присоединённом к домену, или нет, а также не вошёл ли он в систему с помощью другой учётной записи до входа в учётную запись, для которой вам нужно получить отображаемое имя.

$user = (Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData\" | Get-ItemProperty | Where-Object LoggedOnUser -like "$(whoami)" | Select-Object -First 1)

if ((Get-Item $user.PSPath).Property -contains "LoggedOnDisplayName" -eq $true) {
	$user.LoggedOnDisplayName
} else {
	$user.LoggedOnUser | %{$_.Split('\')[1]}
}

2. Как получить отображаемое имя текущего пользователя Windows из командной строки (для компьютеров являющихся частью домена)

2.1 net user $env:USERNAME

Поиск полного имени пользователя в PowerShell для компьютера в домене:

((net user $env:USERNAME /domain | Select-String "Full Name") -replace "Full Name","").Trim()

2.2 Get-WMIObject Win32_UserAccount

Следующие команды найдут полное имя пользователя в PowerShell для компьютера, являющегося частью домена:

$user = whoami
Get-WMIObject Win32_UserAccount | Where-Object caption -eq $user | Select-Object FullName -HideTableHeaders

2.3 [adsi]

Данный способ является универсальным и работает как для доменов, так и для рабочих станций:

$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").Fullname

Также доступны некоторые другие (в основном) малоизвестные свойства. Несколько полезных:

  • Homedrive UNC
  • Homedrive Letter
  • Description
  • Login script

Чтобы вывести их все выполните следующую команду:


[adsi]"WinNT://$dom/$usr,user" | Select-Object *

2.4 Вывод имени пользователя в CMD

Поиск полного имени пользователя в CMD для компьютера, являющегося частью домена:

net user "%USERNAME%" /domain | FIND /I "Full Name"

2.5 Полное имя пользователя в реестре Windows

Смотрите пункт 1.5 — этот метод работает также и для компьютеров в домене.

2.6 [adsi] и LDAP

Этот метод получения полного имени работает только для компьютеров в домене:

([adsi]"LDAP://$(whoami /fqdn)").displayName

Вы можете получить кучу информации, используя этот очень простой инструмент. Проверьте:

([adsi]"LDAP://$(whoami /fqdn)") | Format-List *

2.7 Add-Type

Вы можете добавить класс Microsoft .NET в сеанс PowerShell и спомощью него получить полное имя пользователя:

Add-Type -AssemblyName System.DirectoryServices.AccountManagement;
$DisplayName = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.DisplayName;

Этот класс обеспечивает очень простой доступ ко всем общим свойствам LDAP, поэтому вам не нужно выполнять поиск дважды (один раз с помощью WinNT и ещё раз с помощью LDAP) или использовать [ADSISearcher] для выполнения поиска LDAP, если вам нужны некоторые расширенные свойства, которые WinNT не реализует.

Заключение

Второй метод (Get-WMIObject Win32_UserAccount) и третий ([adsi]) являются универсальными и работают без изменений как для компьютеров, которые являются частью WORKGROUP, так и частью домена. Первый и четвёртый способы различаются тем, что для компьютеров в домене нужно добавить опцию «/domain».


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

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

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