web-dev-qa-db-ja.com

現在のドメインユーザーのフルネームを取得する

PowerShellを使用して、ActiveDirectoryモジュールを使用せずに、現在ログオンしているドメインユーザーのフルネーム(ユーザー名だけでなく)を取得するにはどうすればよいですか?

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

戻り値:

John Doe

他の(ほとんど)不明瞭なプロパティも利用できます。いくつかの便利なもの:

  • ホームドライブUNC
  • ホームドライブレター
  • 説明
  • ログインスクリプト

試してください:

[adsi]"WinNT://$dom/$usr,user" | select *
27
Clayton

私は受け入れられた答えが好きですが、これを自分で試したかったからです。

$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
15
TheCleaner

Powershell 3.0を使用する1つのライナー:

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

Craig620の受け入れられた答えに関するあなたのコメントに基づいて、

このコマンドを実行するには、ドメイン管理者権限が必要ですか?または、ドメインユーザー自体がこのコマンドを実行できますか?

ユーザーのワークステーションにpowershellモジュールをインストールしないようにしようとしているようですが、そうですが、いいえ、ADで自分の名前を検索するためにドメイン管理者である必要はありません。 OutlookのGALに表示されるほとんどの情報(フルネームを含む)を標準ユーザーとして検索できます。

ADの標準ユーザーとして他の人のフルネームを検索することもできます(ADモジュールを避けたい場合は、Get-WmiObject Win32_userAccountを使用)。 ADをクエリするサービスアカウント(まあ、 管理されたサービスアカウント より前)は、通常、標準の非特権ADユーザーです。

3

「ed」の$ env:USERNAMEは「fred」および「edith」と一致するため、-matchの使用は適切な選択ではありません。代わりに-eqを使用して完全に一致させ、必要に応じてドメインに追加します。先頭の末尾の改行を出力する「select fullname | ft -HideTableHeaders」の代わりに、末尾のforeachループを使用して、先頭の末尾の空白をすべて削除します。

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

Active Directoryモジュールを使用したくない場合は、使用できません。さらに深く、ドメインコントローラーに対して実際のLDAPクエリを実行する場合を除きます。

ユーザー名以外のユーザー情報はActive Directoryに保存され、そこから取得する必要があります。

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

この非常にシンプルなツールを使用して、大量の情報を取得できます。チェックアウト

([adsi]"LDAP://$(whoami /fqdn)") | fl *
0
KeyszerS