mavericklp
Goto Top

Domain User Beschreibung oder Email auslesen

Moin moin zusammen,
ich bin auf der Suche nach einer Möglichkeit, entwerder die User Beschreibung, die im AD gespeichert ist oder die Email Adresse, die im AD gespeichert ist auszulesen. Um diese dann weiter zu verarbeiten.

Hintergrund:
Ich bastel an einer Datei, die bei jedem Benutzer (ca. 250) einmalig ausgeführt werden soll. Jetzt würde ich gerne bei den Usern unterscheiden zwischen externen und internen Mitarbeitern. Die Mitarbeiter befinden sich im dem AD Ordner "External User", haben in der Beschreibung "Extern - Contact...." stehen und die Email ist "extern-..." Das sind die einzigen Unterschiede zu normalen Mitarbeitern.
Bei den Internen Mitarbeitern soll eine Verknüpfung auf dem Desktop von unserem Zeiterfassungs System liegen. Die Externen Mitarbeiter sind in dem Programm nicht gelistet und sollen daher auch die Verknüpfung nicht bekommen.

falls das nicht funktionieren sollte, wäre ich auch bereit das ganze in powershell zu schreiben. Jedoch muss ich da erst einmal durchblicken, da ich bisher noch kein Skript dort erstellt habe.

Schon einmal vielen Dank für eure Hilfe!!

Content-Key: 286393

Url: https://administrator.de/contentid/286393

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: 114757
114757 22.10.2015 aktualisiert um 18:26:26 Uhr
Goto Top
Powershell:
Import-Module ActiveDirectory
get-aduser -Filter "EMailAddress -like 'extern-*'" -Properties EMailAddress | select SamAccountName,EMailAddress  
ohne installierte RSAT-Tools für die Server-Verwaltung gehts so
$adsi = new-object adsisearcher("LDAP://$(([adsi]'LDAP://rootDSE').defaultNamingContext)","(&(objectCategory=user)(mail=extern-*))","*",[System.DirectoryServices.SearchScope]::Subtree)  
$adsi.FindAll()| %{
    $_.Properties.samaccountname
}
Gruß jodel32
Mitglied: mavericklp
mavericklp 23.10.2015 um 17:17:35 Uhr
Goto Top
super! mit deinem tip komme ich weiter!!

Nach dem ich mir das ganze jetzt mal angesehen habe mit dem Thema PowerShell bin ich leider stark enttäuscht.... bin bisher davon ausgegangen, das PowerShell sowas wie Batch ist nur als Ordentliche Programmiersprache. Schweiter leider daran, auf den Computern PowerShell zu aktivieren ohne mich auf jeden Computer einmal anzumelden.

Hab das Problem jetzt aber umgangen. Ich lege eine Text datei an, in der alle Externen mit Usernamen enthalten sind. Beim Starten der Batch kontrolliere ich ob der angemeldete Benutzer in der Liste enthalten ist.
Mitglied: 114757
114757 23.10.2015 aktualisiert um 18:59:59 Uhr
Goto Top
Zitat von @mavericklp:
Nach dem ich mir das ganze jetzt mal angesehen habe mit dem Thema PowerShell bin ich leider stark enttäuscht.... bin bisher davon ausgegangen, das PowerShell sowas wie Batch ist nur als Ordentliche Programmiersprache.
Ist es auch ... Nur ein Anfänger der Powershell kann so urteilen, das ist normal, wenn du mal eingestiegen bist willst du kein Batch mehr anfassen, denn auf einmal kannst du alles ohne Zusatztools erledigen face-smile was du in Batch bisher mit einem Mischmasch aus VBS etc. erledigen musstest. Powershell basiert auf .NET, dir steht also ein riesiges Arsenal an Funktionen zur Verfügung.
Schweiter leider daran, auf den Computern PowerShell zu aktivieren ohne mich auf jeden Computer einmal anzumelden.
Dafür gibt es GPOs! ..Um die Execution-Policy anzupassen.
Computer- / Benutzerkonfiguration > Administrative Vorlagen > Windows Komponenten > Windows Powershell > Skriptausführung aktivieren

Gruß jodel32

p.s. Die Attribute lassen sich auch per VBS in einem "Logon"-Skript abfragen wenn du willst:
Beispiel für das "Description"-Attribut
Set objSysInfo = CreateObject("ADSystemInfo")   
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)   
strDescription = objUser.Get("Description")  
if strDescription <> "" then  
    if Instr(1,strDescription,"Extern",1) > 0 then  
        msgbox "Ich bin ein externer User"  
    else
        msgbox "Ich bin ein interner User"  
    end if
end if