Recuperar o nome completo do usuário do domínio atual

23

Usando o PowerShell, como posso obter o nome completo do usuário do domínio atualmente conectado (não apenas o nome de usuário) sem a necessidade do módulo ActiveDirectory?

Jonathan Rioux
fonte

Respostas:

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

Devoluções:

John Doe

Algumas outras propriedades (principalmente) obscuras também estão disponíveis. Alguns úteis:

  • Homedrive UNC
  • Carta Homedrive
  • Descrição
  • Script de login

Experimentar:

[adsi]"WinNT://$dom/$usr,user" | select *
Clayton
fonte
3
Boa resposta. Claro, isso é consultando AD ... :)
Massimo
1
Preciso de direitos de administrador de domínio para executar este comando? Ou o próprio usuário do domínio pode executar este comando?
Jonathan Rioux
1
Qualquer usuário do domínio pode consultar o AD para esse tipo de informação.
Massimo
1
@ Massimo Nenhum usuário do domínio pode consultar o AD para esse tipo de informação. Os usuários podem não ser concedida (ou negada) a "ler restrições de conta" permissão, e ser incapaz de consultar todos os dados do Active Directory
Ian Boyd
15

Eu gosto da resposta aceita, mas só porque eu queria tentar isso sozinho:

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

retorna:

FullName
--------
TheCleaner

ou se você deseja não ter as informações do cabeçalho e apenas o resultado:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide
O limpador
fonte
Eu li este muito rapidamente, ela faz consulta AD. Recuo verbalmente meu voto.
MDMoore313
2
Mas não requer os módulos AD PS #
squillman
3
@ Squillman não, apenas dando ao Cleaner um momento difícil.
MDMoore313
Peguei vocês. Desculpe, deve ter sido descafeinado ...
squillman
7

Um revestimento usando o Powershell 3.0:

gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders
MDMoore313
fonte
3

Com base no seu comentário na resposta aceita de Craig620,

Preciso de direitos de administrador de domínio para executar este comando? Ou o próprio usuário do domínio pode executar este comando?

Parece que você está tentando evitar a instalação de módulos do PowerShell nas estações de trabalho dos usuários. Sim, mas também não, você não precisa ser um administrador de domínio para procurar seu próprio nome no AD. Você pode procurar praticamente todas as informações que aparecem na GAL no Outlook, incluindo o nome completo, como usuário padrão.

Você também pode procurar os nomes completos de outras pessoas como um usuário padrão no AD (usando Get-WmiObject Win32_userAccount, se desejar evitar os módulos do AD). As contas de serviço que consultam o AD (bem, antes das contas de serviço gerenciadas ) geralmente são usuários padrão e sem privilégios do AD.

Katherine Villyard
fonte
1

Usar -match não é uma boa opção, porque um $ env: USERNAME de "ed" corresponderá a "fred" e "edith". Em vez disso, use -eq para obter uma correspondência exata e adicione o domínio, se necessário. Eu uso um loop foreach no final para remover todos os espaços em branco à esquerda como alternativa para "selecionar nome completo | ft -HideTableHeaders", que imprime uma nova linha à esquerda e à direita.

gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}
Michael Zakes
fonte
1

Se você sempre possui o .Net 3.5 ou superior (o que deveria com o PowerShell v4.0 e superior):

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

Essa classe fornece acesso muito fácil a todas as propriedades LDAP comuns, portanto, você não precisa procurar duas vezes (uma vez com o WinNT e novamente com LDAP) ou usar [ADSISearcher]para fazer uma pesquisa LDAP se desejar algumas propriedades estendidas que o WinNT não implementa .

Pedaços de bacon
fonte
0

Se você não quiser usar o módulo do Active Directory, não poderá; a menos que você queira ir ainda mais fundo e executar uma consulta LDAP real em um controlador de domínio.

Qualquer informação de usuário que não seja o nome de usuário é armazenada no Active Directory e precisa ser recuperada lá.

Massimo
fonte
Mas quando abro o menu Iniciar, o nome completo do usuário é mostrado aqui! Quero dizer, deve ser armazenado em algum lugar?
Jonathan Rioux
4
Sim, está armazenado em algum lugar. Está armazenado no Active Directory.
Katherine Villyard 17/03/2014
Provavelmente também está armazenado / armazenado em cache no registro, mas não o encontrei facilmente e desisti.
mfinni
1
É verdade que ele está armazenado no AD, mas a [ADSI]interface existe há muito mais tempo que os módulos do AD, e realmente não é tão complicado, como mostra a resposta aceita.
precisa