Truy xuất tên đầy đủ của người dùng tên miền hiện tại


23

Sử dụng PowerShell, làm cách nào tôi có thể nhận được tên đầy đủ của người dùng tên miền hiện tại (không chỉ tên người dùng của nó) mà không cần mô-đun ActiveDirectory?

Câu trả lời:


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

Trả về:

John Doe

Một số thuộc tính tối nghĩa khác (chủ yếu) cũng có sẵn. Một vài cái hữu ích:

  • Homedrive UNC
  • Thư Homedrive
  • Sự miêu tả
  • Kịch bản đăng nhập

Thử:

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

3
Câu trả lời tốt. Tất nhiên, đây truy vấn AD ... :)
Massimo

1
Tôi có cần quyền quản trị miền để chạy lệnh này không? Hoặc chính người dùng tên miền có thể chạy lệnh này?
Jonathan Rioux

1
Bất kỳ người dùng tên miền nào cũng có thể truy vấn AD cho loại thông tin này.
Massimo

1
@Massimo Không phải bất kỳ người dùng tên miền nào cũng có thể truy vấn AD cho loại thông tin này. Người dùng không thể được cấp (hoặc từ chối) quyền "Đọc hạn chế tài khoản" và không thể truy vấn bất kỳ dữ liệu nào từ Active Directory
Ian Boyd

15

Tôi thích câu trả lời được chấp nhận, nhưng chỉ vì tôi muốn tự mình thử nó:

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

trả về:

FullName
--------
TheCleaner

hoặc nếu bạn muốn không có thông tin tiêu đề và chỉ có kết quả:

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

Tôi đọc quá nhanh, nó không truy vấn AD. Tôi bằng lời rút lại phiếu bầu của tôi.
MDMoore313

2
Nhưng không yêu cầu các mô-đun AD PS
squillman

3
@squillman thì không, chỉ cần cho Cleaner một khoảng thời gian khó khăn.
MDMoore313

Gotcha. Xin lỗi, phải được khử caffein ...
squillman

7

Một lớp lót sử dụng Powershell 3.0:

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

3

Dựa trên nhận xét của bạn về câu trả lời được chấp nhận của Craig620,

Tôi có cần quyền quản trị miền để chạy lệnh này không? Hoặc chính người dùng tên miền có thể chạy lệnh này?

Có vẻ như bạn đang cố gắng tránh cài đặt các mô-đun powershell trên máy trạm của người dùng, vâng, nhưng cũng không, bạn không cần phải là quản trị viên tên miền để tìm kiếm tên của chính mình trong AD. Bạn có thể tra cứu khá nhiều thông tin xuất hiện trong GAL trong Outlook, bao gồm tên đầy đủ, với tư cách là người dùng chuẩn.

Bạn cũng có thể tra cứu tên đầy đủ của người khác dưới dạng người dùng chuẩn trong AD (sử dụng Get-WmiObject Win32_userAccount, nếu bạn muốn tránh các mô-đun AD). Các tài khoản dịch vụ truy vấn AD (tốt, trước các tài khoản dịch vụ được quản lý ) thường là người dùng AD tiêu chuẩn, không có đặc quyền.


1

Sử dụng -match không phải là một lựa chọn tốt vì $ env: USERNAME của "ed" sẽ khớp với "fred" và "edith". Thay vào đó, sử dụng -eq cho một kết hợp chính xác và thêm vào miền nếu cần. Tôi sử dụng một vòng lặp foreach ở cuối để loại bỏ tất cả khoảng trắng dẫn đầu thay thế cho "select fullname | ft -HideTableHeaders" in dòng mới hàng đầu và dấu.

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

1

Nếu bạn luôn có .Net 3.5 trở lên (bạn nên có PowerShell v4.0 trở lên):

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

Lớp đó cung cấp quyền truy cập rất dễ dàng vào tất cả các thuộc tính LDAP phổ biến, do đó bạn không cần tra cứu hai lần (một lần với WinNT và một lần nữa với LDAP) hoặc sử dụng [ADSISearcher]để thực hiện tìm kiếm LDAP nếu bạn muốn một số thuộc tính mở rộng mà WinNT không triển khai .


0

Nếu bạn không muốn sử dụng mô-đun Active Directory, bạn không thể; trừ khi bạn muốn đi sâu hơn nữa và thực hiện truy vấn LDAP thực tế đối với bộ điều khiển miền.

Bất kỳ thông tin người dùng nào ngoài tên người dùng đều được lưu trữ trong Active Directory và nó phải được truy xuất tại đó.


Nhưng khi tôi mở menu bắt đầu, tên đầy đủ của người dùng được hiển thị ở đây! Ý tôi là, nó phải được lưu trữ ở đâu đó?
Jonathan Rioux

4
Vâng, nó được lưu trữ ở đâu đó. Nó được lưu trữ trong Active Directory.
Kinda Villyard 17/03/2016

Nó có thể được lưu trữ / lưu trữ trong sổ đăng ký, nhưng tôi không tìm thấy nó dễ dàng và đã từ bỏ.
mfinni

1
Đúng là nó được lưu trữ trong AD nhưng [ADSI]giao diện đã tồn tại lâu hơn nhiều so với các mô-đun AD và thực sự không quá phức tạp, như câu trả lời được chấp nhận cho thấy.
Hunter Eidson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.