it-swarm-vi.com

Dòng lệnh Địa chỉ email truy vấn Active Directory cho tên người dùng

Trên Windows XP trong môi trường Active Directory - cách dễ nhất để tôi truy vấn địa chỉ email của người dùng từ AD được cung cấp tên người dùng của họ trên dòng lệnh.

(Giả sử tôi biết nơi nó được giữ bình thường trên cây).

(Tôi biết về người dùng mạng tên đăng nhập / domain nhưng tôi chỉ muốn phần tử địa chỉ email quay lại.)

19
Hawkeye
dsquery user -name "user name"|dsget user -samid -email -display 
18
pQd

người dùng DSquery -name "Tên họ" người dùng tin nhắn

7
TheCleaner

Nếu email bạn muốn cũng là Tên hiệu trưởng người dùng, bạn có thể nhận nó với

whoami /upn

Tuy nhiên, điều này chỉ hoạt động để có được email của người dùng hiện tại, không phải bất kỳ người dùng nào như câu hỏi ban đầu được đưa ra.

6
krispy

một cái gì đó giống như câu hỏi này có thể làm việc.

truy vấn email theo tên người dùng dsquery.exe * -filter "(& (objectClass = user) (! (objectClass = computer) (sAMAccountName = username)))" | người dùng tin nhắn

Tôi đọc sai bài đăng đầu tiên và nghĩ rằng bạn muốn tên người dùng từ tên email. Đó là lý do tại sao tôi đăng bài này. dsquery.exe * -filter "(& (objectClass = user) (! (objectClass = computer) ([email protected])))" -attr tên người dùng

dựa trên một số tập lệnh tại nơi làm việc và trang web này có một số ý tưởng khác http://www.petri.co.il/forums/showthread.php?t=18464 về việc sử dụng csvde.exe

5
BrianP

adfind -sc u: thư "tên người dùng"

4
benPearce

Cài đặt Powershell và gói addon QuestAD. Sau đó, nó là một cái gì đó như:

connect-qadservice
(get-qaduser 'bobsusername').emailAddress
2
Neobyte

Tìm thấy chủ đề này đã giúp tôi có được những gì tôi muốn. Để có được bất kỳ thuộc tính người dùng AD vào các biến môi trường. Kịch bản lệnh này lấy tất cả các thuộc tính mong muốn từ người dùng đã đăng nhập và đặt một biến môi trường tương ứng. Tôi đã thêm tiền tố vào các biến nhưng đó là tùy chọn, vì vậy tên biến trở thành "AD [tên thuộc tính]". Các thuộc tính là lựa chọn của bạn, chỉ cần thêm hoặc xóa thuộc tính của bạn sau -attr. Không hữu ích cho các thuộc tính đa trị. Giá trị cuối cùng (một) đi vào biến môi trường.

Kịch bản này là cục bộ của cmd.exe hiện tại

for /F "tokens=1,* delims=: " %%A in ('dsquery * domainroot -l -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=%USERNAME%))" -attr adminDescription employeetype company department physicalDeliveryOfficeName street title mail') do set AD%%A=%%B

Để có được các biến môi trường toàn cầu trong windows, chúng ta có thể sử dụng "setx" trong windows 7. (Đối với bản ghi có lẽ ... nhưng chậm hơn nhiều.)

for /F "tokens=1,* delims=: " %%A in ('dsquery * domainroot -l -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=%USERNAME%))" -attr adminDescription employeetype company department physicalDeliveryOfficeName street title mail') do set AD%%A=%%B& setx AD%%A "%%~B" > NUL

: EDIT: một ký tự khoảng trắng ở cuối câu lệnh set trong ví dụ 2 khiến giá trị kết thúc bằng khoảng trống. Loại bỏ nó để sửa chữa. (Đặt %% A = %% B & setx ...) Cũng phát hiện ra rằng bạn phải xuất ít nhất hai thuộc tính để tập lệnh hoạt động chính xác.

Một hồi âm muộn, nhưng nếu nó có thể giúp bất cứ ai ngoài đó thì tôi rất vui.

2
Jörgen in Sweden

Bạn có thể viết VBScript đơn giản để truy vấn thông qua LDAP Tạo tệp có phần mở rộng VBS

Đặt bên trong một cái gì đó như thế này

On Error Resume Next
Set objUser = GetObject _
  ("LDAP://CN=USER NAME,DC=DOMAIN_NAME,DC=com")

objUser.GetInfo

strMail = objUser.Get("mail")

WScript.echo "mail: " & strMail 

Đặt TÊN NGƯỜI DÙNG chính xác vào chuỗi truy vấn LDAP, chạy tệp VBS và tận hưởng :)

Nếu đây là lần đầu tiên bạn làm việc với LDAP, việc viết truy vấn LDAP có thể hơi phức tạp một chút Active Directory Explorer từ Microsoft Run Explorer, điều hướng đến người dùng và xem những gì nó hiển thị trong hộp văn bản Đường dẫn

Trong trường hợp của tôi, nó giống như CN = [tên người dùng], CN = Users, DC = [city_name], DC = [company_name], DC = com,

2
Bogdan_Ch

LINQ đến mọi thứ ! Cho thuận tiện:

1) Trong thuộc tính truy vấn của LinqPad, hãy thêm một tham chiếu đến System.DirectoryService.AccountMan Quản lý.dll. 2) Nhập không gian tên bổ sung: System.DirectoryService.AccountQuản lý

using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "MyDomain))
  using(UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "MyUserID"))
        usr.Dump();
2
What Would Be Cool

Tôi không biết nó có khớp với chủ đề khởi động hay không. Nhưng tôi chỉ tìm thấy một giải pháp cho vấn đề hiện tại của tôi đã được giải quyết sau khi duyệt chủ đề này. Tìm ID đăng nhập người dùng dựa trên ĐỊA CHỈ KNOWN MAIL. :)

C:\Users\MrCMD>for /f "delims=" %u in ('type salesforce-uid-mail-address.txt') do @dsquery.exe * -filter "(&(objectClass=user)(!(objectClass=computer)(mail=%u)))">>"salesforce-uid-cn.txt"
┌─────────────────────────────────────┐
│ Executed Wed 07/10/2013  8:29:55.05 │ As [MrCMD]
└─────────────────────────────────────┘
C:\Users\MrCMD>for /f "delims=" %u in ('type salesforce-uid-cn.txt') do @dsget.exe user %u -samid -l|find "samid" /i>>"salesforce-uid-samid.txt"
┌─────────────────────────────────────┐
│ Executed Wed 07/10/2013  8:31:56.40 │ As [MrCMD]
└─────────────────────────────────────┘

Tệp [salesforce-uid-mail-address.txt] chứa danh sách các địa chỉ email. Tệp [salesforce-uid-cn.txt] chứa "CN hoàn chỉnh với đường dẫn". Và tệp [salesforce-uid-samid.txt] chứa "tên đăng nhập người dùng SAMID" bí danh ". Đó là tất cả mọi người. Bất kỳ ý tưởng để cải thiện đều được chào đón. :)

1
Rhak Kahr