pengembangan-web-mp.com

Baris perintah Alamat email permintaan direktori aktif untuk nama pengguna

Pada Windows XP dalam lingkungan Active Directory - apa cara termudah bagi saya untuk menanyakan alamat email pengguna dari AD yang diberikan nama pengguna mereka di baris perintah.

(Dengan asumsi saya tahu di mana ia disimpan secara normal di pohon).

(Saya tahu tentang Pengguna Neto nama login / domain tapi saya hanya ingin elemen alamat email kembali.)

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

pengguna dsquery -nama "Firstname Lastname" | pengguna dsget -email

7
TheCleaner

Jika email yang Anda inginkan juga merupakan Nama Pokok Pengguna, Anda bisa mendapatkannya

whoami /upn

Namun, ini hanya berfungsi untuk mendapatkan email dari pengguna saat ini, bukan pengguna mana pun seperti pertanyaan yang didalilkan semula.

6
krispy

sesuatu seperti dsquery ini mungkin berhasil.

kueri email dengan nama pengguna dsquery.exe * -filter "(& (objectClass = pengguna) (! (objectClass = komputer) (sAMAccountName = nama pengguna)))" | pengguna dsget -email

Saya salah membaca posting terlebih dahulu dan mengira Anda menginginkan nama pengguna dari nama email. Itu sebabnya saya memposting yang ini. dsquery.exe * -filter "(& (objectClass = pengguna) (! (objectClass = komputer) ([email protected])))" -attr username

berdasarkan pada beberapa skrip yang sedang bekerja dan situs ini yang memiliki beberapa gagasan lain http://www.petri.co.il/forums/showthread.php?t=18464 tentang penggunaan csvde.exe

5
BrianP

adfind -sc u: mail "username"

4
benPearce

Instal Powershell, dan paket addon QuestAD. Maka itu adalah sesuatu seperti:

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

Menemukan utas ini yang membantu saya mendapatkan apa yang saya inginkan. Untuk mendapatkan atribut pengguna AD ke dalam variabel lingkungan. Skrip ini mengambil semua atribut yang diinginkan dari pengguna yang masuk dan menetapkan variabel lingkungan yang sesuai. Saya awalan variabel tetapi itu opsional, jadi nama variabel menjadi "AD [atribut name]". Atribut adalah pilihan Anda, cukup tambahkan atau hapus atribut Anda setelah -attr. Tidak terlalu berguna untuk atribut multinilai. Nilai (satu) terakhir masuk ke variabel lingkungan.

Skrip ini bersifat lokal ke cmd.exe saat ini

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

Untuk mendapatkan variabel lingkungan global di windows kita dapat menggunakan "setx" di windows 7. (Untuk naskah masuk mungkin ... tapi jauh lebih lambat.)

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: karakter spasi di akhir set-statement dalam contoh 2 menyebabkan nilai diakhiri dengan ruang kosong. Dihapus untuk memperbaikinya. (Set %% A = %% B & setx ...) Juga menemukan bahwa Anda harus mengekspor setidaknya dua atribut agar skrip berfungsi dengan baik.

Respons yang terlambat, tetapi jika itu bisa membantu siapa pun di luar sana, aku senang.

2

Anda dapat menulis VBScript sederhana untuk permintaan melalui LDAP Buat file dengan ekstensi VBS

Taruh di dalam sesuatu seperti ini

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 

Masukkan NAMA PENGGUNA yang benar ke dalam string kueri LDAP, jalankan file VBS, dan nikmati :)

Jika ini adalah pertama kalinya Anda bekerja dengan LDAP, mungkin sedikit rumit untuk menulis kueri LDAP Untuk mengenali jalur LDAP kepada pengguna (yaitu apa yang perlu Anda tempatkan setelah LDAP: //) Anda dapat mengunduh - Explorer Direktori Aktif dari Microsoft Run Explorer, navigasikan ke pengguna dan lihat apa yang ditampilkan di kotak teks Path

Dalam kasus saya itu adalah sesuatu seperti CN = [nama pengguna], CN = Pengguna, DC = [city_name], DC = [nama_perusahaan], DC = com,

2
Bogdan_Ch

LINQ ke semuanya ! Untuk kenyamanan:

1) Dalam properti kueri LinqPad, tambahkan referensi ke System.DirectoryServices.AccountManagement.dll. 2) Impor Namespace Tambahan: System.DirectoryServices.AccountManagement

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

Saya tidak tahu itu cocok dengan thread starter mean atau tidak. Tapi saya hanya menemukan solusi dari masalah saya yang sudah ada yang diselesaikan setelah menelusuri utas ini. Menemukan ID PENGGUNA PENGGUNA berdasarkan ALAMAT DIKETAHUI 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]
└─────────────────────────────────────┘

File [salesforce-uid-mail-address.txt] berisi daftar alamat email. File [salesforce-uid-cn.txt] berisi "lengkapi CN dengan path". Dan file [salesforce-uid-samid.txt] berisi "ditemukan SAMID" alias "nama login pengguna". Itu semua orang. Setiap ide untuk perbaikan dipersilahkan. :)

1
Rhak Kahr