Ambil nama lengkap pengguna domain saat ini

23

Dengan menggunakan PowerShell, bagaimana saya bisa mendapatkan nama lengkap pengguna domain yang saat ini masuk (tidak hanya nama pengguna) tanpa perlu modul ActiveDirectory?

Jonathan Rioux
sumber

Jawaban:

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

Pengembalian:

John Doe

Beberapa properti lain (kebanyakan) tidak jelas juga tersedia. Beberapa yang bermanfaat:

  • Homedrive UNC
  • Surat Homedrive
  • Deskripsi
  • Skrip login

Mencoba:

[adsi]"WinNT://$dom/$usr,user" | select *
Clayton
sumber
3
Jawaban yang bagus. Tentu saja, ini adalah query AD ... :)
Massimo
1
Apakah saya memerlukan hak admin domain untuk menjalankan perintah ini? Atau bisakah pengguna domain itu sendiri dapat menjalankan perintah ini?
Jonathan Rioux
1
Setiap pengguna domain dapat meminta AD untuk informasi semacam ini.
Massimo
1
@ Massimo Tidak ada pengguna domain yang dapat meminta AD untuk informasi seperti ini. Pengguna tidak dapat diberikan (atau ditolak) izin "Baca batasan akun", dan tidak dapat menanyakan data apa pun dari Active Directory
Ian Boyd
15

Saya suka jawaban yang diterima, tetapi hanya karena saya ingin mencoba ini sendiri:

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

pengembalian:

FullName
--------
TheCleaner

atau jika Anda ingin tidak memiliki info tajuk dan hanya hasilnya:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide
Pembersih
sumber
Saya membaca ini terlalu cepat, hal itu tidak permintaan AD. Saya menarik kembali suara saya secara lisan.
MDMoore313
2
Tetapi tidak memerlukan modul PS PS
squillman
3
@squillman tidak, hanya memberi Cleaner waktu yang sulit.
MDMoore313
Gotcha. Maaf, pasti sudah bebas kafein ...
squillman
7

Satu liner menggunakan Powershell 3.0:

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

Berdasarkan komentar Anda pada jawaban yang diterima Craig620,

Apakah saya memerlukan hak admin domain untuk menjalankan perintah ini? Atau bisakah pengguna domain itu sendiri dapat menjalankan perintah ini?

Kedengarannya Anda mencoba menghindari memasang modul PowerShell di workstation pengguna, ya, tetapi juga, tidak, Anda tidak perlu menjadi admin domain untuk mencari nama Anda sendiri dalam AD. Anda dapat melihat hampir semua informasi yang muncul di GAL di Outlook, termasuk nama lengkap, sebagai pengguna standar.

Anda juga dapat mencari nama lengkap orang lain sebagai pengguna standar dalam AD (menggunakan Get-WmiObject Win32_userAccount, jika Anda ingin menghindari modul AD). Akun layanan yang meminta AD (baik, sebelum akun layanan terkelola ) biasanya standar, pengguna AD yang tidak beruntung.

Katherine Villyard
sumber
1

Menggunakan -match bukan pilihan yang baik karena $ env: USERNAME dari "ed" akan cocok dengan "fred" dan "edith". Alih-alih gunakan-eq untuk pencocokan tepat dan tambahkan domain jika perlu. Saya menggunakan foreach loop di akhir untuk menghapus semua yang memimpin spasi spasi sebagai alternatif untuk "pilih nama lengkap | ft -HideTableHeaders" yang mencetak baris baru yang memimpin dan tertinggal.

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

Jika Anda selalu mendapat .Net 3.5 atau lebih tinggi (yang harus Anda lakukan dengan PowerShell v4.0 dan lebih tinggi):

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

Kelas itu menyediakan akses yang sangat mudah ke semua properti LDAP umum, jadi Anda tidak perlu mencari dua kali (sekali dengan WinNT dan sekali lagi dengan LDAP) atau gunakan [ADSISearcher]untuk melakukan pencarian LDAP jika Anda menginginkan beberapa properti tambahan yang tidak diimplementasikan oleh WinNT. .

Bit Bacon
sumber
0

Jika Anda tidak ingin menggunakan modul Active Directory, Anda tidak bisa; kecuali jika Anda ingin masuk lebih dalam dan melakukan permintaan LDAP aktual terhadap pengontrol domain.

Setiap informasi pengguna selain nama pengguna disimpan di Active Directory, dan harus diambil di sana.

Massimo
sumber
Tetapi ketika saya membuka menu mulai, nama lengkap pengguna ditampilkan di sini! Maksud saya, itu harus disimpan di suatu tempat?
Jonathan Rioux
4
Ya, itu disimpan di suatu tempat. Itu disimpan di Active Directory.
Katherine Villyard
Mungkin disimpan / di-cache dalam registri juga, tetapi saya tidak menemukannya dengan mudah dan menyerah.
mfinni
1
Memang benar bahwa itu disimpan dalam AD tetapi [ADSI]antarmuka telah ada jauh lebih lama daripada modul AD, dan sebenarnya tidak terlalu rumit, seperti yang ditunjukkan oleh jawaban yang diterima.
Hunter Eidson