Получить полное имя пользователя текущего домена

Используя PowerShell, как я могу получить полное имя пользователя текущего пользователя (не только его имя пользователя) без модуля ActiveDirectory?

22 голоса | спросил Jonathan Rioux 18 MaramTue, 18 Mar 2014 00:09:59 +04002014-03-18T00:09:59+04:0012 2014, 00:09:59

6 ответов


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

Возвращает:

John Doe

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

  • Homedrive UNC
  • Письмо Homedrive
  • Описание
  • Скрипт входа

Try:

[adsi]"WinNT://$dom/$usr,user" | select *
ответил Clayton 18 MaramTue, 18 Mar 2014 00:30:18 +04002014-03-18T00:30:18+04:0012 2014, 00:30:18
13

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

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName

возвращает:

FullName
--------
TheCleaner

, или если вы не хотите иметь информацию заголовка и только результат:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide
ответил TheCleaner 18 MaramTue, 18 Mar 2014 00:57:58 +04002014-03-18T00:57:58+04:0012 2014, 00:57:58
7

Один вкладыш с использованием Powershell 3.0:

gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders
ответил MDMoore313 18 MaramTue, 18 Mar 2014 01:35:09 +04002014-03-18T01:35:09+04:0001 2014, 01:35:09
3

Основываясь на вашем комментарии к принятому ответу Craig620,

  

Нужно ли мне использовать права администратора домена для запуска этой команды? Или может домен   сам пользователь может запустить эту команду?

Похоже, вы пытаетесь избежать установки модулей powershell на пользовательских рабочих станциях, да, но также нет, вам не нужно быть администратором домена, чтобы искать свое имя в AD. Вы можете найти практически любую информацию, которая отображается в GAL в Outlook, включая полное имя, в качестве стандартного пользователя.

Вы также можете найти полные имена других людей в качестве стандартного пользователя в AD (используя Get-WmiObject Win32_userAccount, если вы хотите избежать AD модули). Учетные записи служб, которые запрашивают AD (ну, до управляемые учетные записи служб ) обычно являются стандартными, непривилегированными пользователями AD.

ответил Katherine Villyard 18 MaramTue, 18 Mar 2014 02:50:19 +04002014-03-18T02:50:19+04:0002 2014, 02:50:19
1

Использование -match не является хорошим выбором, потому что $ env: USERNAME из «ed» будет соответствовать «fred» и «edith». Вместо этого используйте -eq для точного соответствия и добавьте в домен, если необходимо. Я использую цикл foreach в конце, чтобы удалить все ведущие конечные пробелы в качестве альтернативы «select fullname | ft -HideTableHeaders», который печатает ведущую и завершающую новую строку.

gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}
ответил Michael Zakes 9 MarpmMon, 09 Mar 2015 21:57:10 +03002015-03-09T21:57:10+03:0009 2015, 21:57:10
0

Если вы не хотите использовать модуль Active Directory, вы не можете; если вы хотите пойти еще глубже и выполнить фактический запрос LDAP к контроллеру домена.

Любая информация пользователя, отличная от имени пользователя, хранится в Active Directory, и ее необходимо найти там.

ответил Massimo 18 MaramTue, 18 Mar 2014 00:17:17 +04002014-03-18T00:17:17+04:0012 2014, 00:17:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132