it-swarm-tr.com

Kullanıcı adı için komut satırı Active Directory sorgu e-posta adresi

Windows XP) - komut satırında kullanıcı adı verildiğinde bir kullanıcının e-posta adresini AD'den sorgulamamın en kolay yolu nedir?.

(Normalde ağaçta nerede tutulduğunu bildiğimi varsayarsak).

(Net Kullanıcıyı biliyorum kullanıcı adı / domain ancak sadece e-posta adresi öğesini geri istiyorum.)

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

dsquery kullanıcı adı "Adı Soyadı" | dsget kullanıcısı-posta

7
TheCleaner

İstediğiniz e-posta aynı zamanda Kullanıcı Asıl Adı ise,

whoami /upn

Ancak, bu yalnızca geçerli kullanıcının e-postasını almak için çalışır, başlangıçta önerildiği gibi herhangi bir kullanıcı değil.

6
krispy

böyle bir şey işe yarayabilir.

kullanıcı adına göre sorgulama e-postası dsquery.exe * -filter "(& (objectClass = kullanıcı) (! (objectClass = bilgisayar) (sAMAccountName = kullanıcı adı)))" | dsget kullanıcısı-posta

Önce yazıyı yanlış okudum ve e-posta adından kullanıcı adı istediğinizi düşündüm. Bu yüzden bunu gönderdim. dsquery.exe * -filter "(& (objectClass = kullanıcı) (! (objectClass = bilgisayar) ([email protected]))" -attr kullanıcı adı

iş yerinde bazı komut dosyalarını ve başka fikirleri olan bu siteyi temel alan http://www.petri.co.il/forums/showthread.php?t=18464 csvde.exe kullanma hakkında

5
BrianP

adfind -sc u: "kullanıcı adı" postası

4
benPearce

Powershell'i ve QuestAD eklenti paketini yükleyin. O zaman şöyle bir şeydir:

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

İstediğimi elde etmeme yardımcı olan bu konuyu buldum. AD kullanıcılarının özniteliklerini ortam değişkenlerine almak için. Bu komut dosyası, oturum açmış kullanıcıdan istenen tüm öznitelikleri alır ve karşılık gelen bir ortam değişkenini ayarlar. Değişkenlerin önekini ekledim ancak isteğe bağlı, bu nedenle değişken adı "AD [öznitelik adı]" olur. Öznitelikler sizin tercihinizdir, sadece -attr öğesinden sonra özniteliğinizi ekleyin veya kaldırın. Yine de çok değerli öznitelikler için çok yararlı değil. Son (bir) değer ortam değişkenine gider.

Bu komut dosyası geçerli cmd.exe için yerel

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

Pencerelerde küresel ortam değişkenleri elde etmek için, Windows 7'de "setx" kullanabiliriz. (Loginscript için belki ... ama çok daha yavaştır.)

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: örnek 2'deki set-ifadesinin sonundaki boşluk karakteri, değerin boş alanla bitmesine neden oldu. Düzeltmek için kaldırıldı. (Set %% A = %% B & setx ...) Ayrıca, komut dosyasının düzgün çalışması için en az iki özelliği dışa aktarmanız gerektiğini öğrendim.

Geç bir cevap ama dışarıdaki herkese yardım edebilirse mutlu olurum.

2

LDAP aracılığıyla sorgulamak için basit VBScript yazabilirsiniz. VBS uzantılı bir dosya oluşturun

Bunun gibi bir şeyin içine koy

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 

LDAP sorgu dizesine doğru KULLANICI ADI koyun, VBS dosyasını çalıştırın ve keyfini çıkarın :)

LDAP ile ilk kez çalışıyorsanız, LDAP sorgusu yazmak biraz karmaşık olabilir Kullanıcının LDAP yolunu (yani LDAP: // sonra eklemeniz gerekenler) tanımak için - Active Directory Explorer Microsoft Run Explorer'dan kullanıcıya gidin ve Yol metin kutusunda ne göründüğüne bakın

Benim durumumda CN = [kullanıcı adı], CN = Kullanıcılar, DC = [şehir_adı], DC = [şirket_adı], DC = com,

2
Bogdan_Ch

LINQ - her şey ! Kolaylık için:

1) LinqPad sorgu özelliklerinde, System.DirectoryServices.AccountManagement.dll için bir başvuru ekleyin. 2) Ek Ad Alanı İçe Aktarma: System.DirectoryServices.AccountManagement

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

Konu marş ortalamaya uygun olup olmadığını bilmiyorum. Ama sadece bu konuya göz attıktan sonra zaten çözülmüş olan mevcut problemimin bir çözümünü buluyorum. BİLİNEN POSTA ADRESİNE dayalı KULLANICI GİRİŞ Kimliğini bulma. :)

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]
└─────────────────────────────────────┘

[salesforce-uid-mail-address.txt] dosyası e-posta adreslerinin listesini içerir. [salesforce-uid-cn.txt] dosyası "yol ile birlikte tam CN" içeriyor. Ve dosya [salesforce-uid-samid.txt] "bulunan SAMID" takma adı "kullanıcı oturum açma adı" içerir. Hepsi bu kadar millet. İyileştirme için herhangi bir fikir bekliyoruz. :)

1
Rhak Kahr