MercedesCR7 1 Geschrieben 7. Januar 2018 Melden Teilen Geschrieben 7. Januar 2018 Guten Abend alle zusammen, ich wünsche euch einen verspäteten frohes neues Jahr 2018. Also ich will gerne User-Daten Name,Vorname, Telefonnummer, Abteilung und Personalnummer in einer Excel-Datei Exportieren bzw. in einer CSV-Datei. Ich habe schon gegoogelt aber irgendwie nicht das richtige gefunden, auch hier - aber wartet mal, gerne will ich es mit "Exchange Journaling" machen. Ich weiß nicht was genau Exchange Journaling ist, mir wurde gesagt, das man damit auch User-Daten vom Active Directory in einer CSV-Datei exportieren kann. Aus dieser Seite werde ich nicht schlau, hier geht es um Nachrichten usw. https://www.msxfaq.de/exchange/admin/journal.htm Journale bedeuten alle Kommunikationsvorgänge in einer Organisation, einschließlich der E-Mail-Kommunikation aufzuzeichnen, aber mir geht es hier nicht um E-Mails sondern nur Mitarbeiter-Daten. Diesen Script hier habe ich gefunden, funktioniert auch, aber ich kann mit dem Ergebnis nichts anfangen, da das Format einfach schlecht ist. Ist es möglich das die Daten wie Name und Vorname automatisch in getrennten Spalten erscheinen? Und ist es möglich das Feld "Initialen" als Personalnummer zu verwenden? Außerdem, sieht unser AD folgendermaßen aus: Domänenname(Hamburg) -->CV--User--Mitarbeiter. Get-ADUser -Filter * -SearchBase "ou=!Hamburg,dc=test,dc=local" -Properties *| Export-Csv "c:\ADUsers.csv" Um nochmal kurz zufassen was genau meine Frage ist: Kennt ihr einen guten Script um User-Daten vom AD zu exportieren und wie mache ich es mit Exchange Journaling, was genau ist das, ist das auch eine Methode um die User-Daten vom Exchange zu exportieren? Für Missverständnisse entschuldige ich mich vorab. Vielen Dank schon mal. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Januar 2018 Melden Teilen Geschrieben 7. Januar 2018 (bearbeitet) Wenn das keine einmalige Aufgabe ist, würde ich Dir dringend empfehlen, Dir die Grundlagen von Powershell anzueignen. Ich glaube, es würde sich für Dich in der Zukunft auszahlen. Mit Get-ADUser erhältst Du Informationen über Benutzer-Konten aus dem Active Directory. Mit entsprechenden Parametern kannst Du die ausgegebenen Informationen beeinflussen. Get-ADUser -Filter * -SearchBase 'OU=Mitarbeiter,OU=User,OU=CV,DC=Hamburg,DC=local' -Properties OfficePhone,Department,EmployeeID,EmployeeNumber,Initials | Select-Object -Property Name,GivenName,SurName,SamAccoutnName,OfficePhone,Department,EmployeeID,EmployeeNumber,Initials | Export-Csv -Path 'C:\ADUserliste.csv' -Delimiter ';' -NoTypeInformation Dieser Befehl gibt die Benutzer-Konten mit den angegebenen Attributen in eine CSV-Datei aus. Die SearchBase musst Du natürlich noch entsprechend Deiner Umgebung anpassen. An dieser Stelle musst Du den Distinguished Name der OU eintragen, in dem die Benutzer-Konten liegen, die Du ausgeben möchtest. Exchange brauchst Du für diese Informationen nicht. Wenn Du in Zukunft hier Code postest, bitte formatiere diesen als Code. Das vermeidet ungewollte zeilenumbrüche und macht den Code einfacher zu lesen und zu verstehen. Solche Kleinigkeiten macht man eigentlich normalerweise alleine - also ohne großartige Scripte aus dem Internet. Man muss es ja sowieso an die eigene Umgebung anpassen. Fertige Scripte für viele Gelegenheiten findest Du notfalls hier: Powershell Gallery oder hier: Microsoft Technet Script Center. bearbeitet 7. Januar 2018 von BOfH_666 1 Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 7. Januar 2018 Melden Teilen Geschrieben 7. Januar 2018 Moin, am einfachsten geht das mit csvde.exe von einem Rechner aus, der die AD-Verwaltungstools installiert hat. csvde.exe -f C:\Pfad\Ergebnis.txt -u -r "(&(objectClass=user)(objectCategory=person))" -l sn,givenName,telephoneNumber,department,employeeId In welchem Feld bei euch die Personalnummer liegt (Annahme hier: employeeID), müsstest du rausfinden. Nachteil bei csvde: Man hat keine Kontrolle darüber, in welcher Reihenfolge die Felder ausgegeben werden, das kann sich bei jeder Ausführung ändern. Da wäre es dann ggf. relevant, was ihr mit den Daten machen wollt. Gruß, Nils 1 Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 7. Januar 2018 Autor Melden Teilen Geschrieben 7. Januar 2018 Super, danke euch beiden erstmal, das hilft mir sehr weiter. @BOfH_666 Vielen dank für das Script, wie auch NilsK geschrieben hat, weiß ich leider nicht welcher Feld nun employeeID ist, im AD gibt es ja kein Feld dafür. @NilsK Wir brauchen monatlich immer eine Liste von den Mitarbeiter, damit ihr denen News bzw. Interne Unternehmens Veränderungen zusenden können und noch für andere dinge. csvde.exe ist im Win Server 2012 mit dabei oder, ich werde das auch mal ausprobieren. Also Exchange Journaling sollte ich eher auslassen? Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 7. Januar 2018 Melden Teilen Geschrieben 7. Januar 2018 Moin, das Journaling ist etwas völlig anderes. Lass das aus. Bei dem angegebenen Einsatzzweck verstehe ich die Auswahl der Felder nicht. Aber ihr werdet schon wissen, was ihr tut. Gruß, Nils 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Januar 2018 Melden Teilen Geschrieben 7. Januar 2018 (bearbeitet) @BOfH_666 Vielen dank für das Script, wie auch NilsK geschrieben hat, weiß ich leider nicht welcher Feld nun employeeID ist, im AD gibt es ja kein Feld dafür. Deswegen die Empfehlung die Grundlagen von Powershell zu erlernen. Dabei lernst Du auch, wie Du an benötigte Informationen kommst. Der oben verlinkte MVA Kurs ist kostenlos und bietet einen guten strukturierten Einstieg und kostet Dich nur ein bissl Deiner Zeit. Wenn Du Dir zum Beispiel mal ALLE bei Euch benutzten Attribute anzeigen lässt, siehst Du, welches Du davon für Deinen Zweck gebrauchen kannst: Get-ADUser -Identity 'DEIN SAMACCOUNTNAME' -Properties * | Select-Object -Property * Wenn Du Deine eigene Personalnummer kennst und sie im AD gepflegt ist, siehst Du jetzt in welchem AD-Attribut sie gespeichert ist. Aber ihr werdet schon wissen, was ihr tut. .... da kann man nur die Daumen drücken ... ;) :thumb1: :D :schreck: :wink2: bearbeitet 7. Januar 2018 von BOfH_666 1 Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 7. Februar 2018 Autor Melden Teilen Geschrieben 7. Februar 2018 Vielen Dank euch beiden, hat alles Super geklappt, bin auch nun bisschen fitter bei PowerShell. Ich habe nur noch eine letzte Frage dazu, nach dem Export sind die Spalten nach den Attributen benannt "EmployeeID,Name,givenName,description", kann ich das noch ändern ? Durch Personalnummer, Name.Vorname usw. ? Der Befehl "ersetzen" fehlt mir, jedoch finde ich nichts bei meiner Google Suche. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Februar 2018 Melden Teilen Geschrieben 7. Februar 2018 Ihr immer mit Euren oberflächlichen kosmetischen Änderungen ... ... das Zeug is nun mal english ... Du kannst mittels "calculated Properties" die Namen ganz nach Belieben anpassen. Get-ADUser -Identity $env:USERNAME -Properties OfficePhone,Department,EmployeeID,EmployeeNumber,Initials | Select-Object -Property @{Name='Active Directory Objekt Name';Expression={$_.Name}}, @{Name='Name,den die Eltern ausgesucht haben';Expression={$_.GivenName}}, @{Name='FamilienName';Expression={$_.SurName}}, @{Name='Windows AnmeldeName';Expression={$_.SamAccoutnName}}, @{Name='Bürotelefonnummer';Expression={$_.OfficePhone}}, @{Name='Abteilung';Expression={$_.Department}}, @{Name='PersonalKennzeichen';Expression={$_.EmployeeID}}, @{Name='PersonalNummer';Expression={$_.EmployeeNumber}}, @{Name='Anfangsbuchstaben des Namens';Expression={$_.Initials}} 1 Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 7. Februar 2018 Autor Melden Teilen Geschrieben 7. Februar 2018 @BOfH_666 Danke dir und danke für den Link. Also irgendwie bekomme ich das nicht trotzdem nicht hin, beim ausführen bekomme ich die Meldung, dass ich den Befehlspipelineposition 1 einen Wert für InputObject angeben muss? Beim Exportieren erhalte ich eine leere Tabelle nur mit dem Text "Length" . Ich will einfach nur das die Tabelle nach dem exportieren auf deutsch ist bzw. nach meine Eingaben . Hier ist der Code: get-aduser -SearchBase 'OU=Firma,OU=User,OU=CC,DC=domain,DC=Firma,DC=de' -filter 'objectClass -eq "user"' -Properties * | Sort-Object surname | Select-Object -Property EmployeeID,Name,givenName,description,extensionAttribute2| Select-Object -Property @{Name='personalnummer';Expression={$_.EmployeeID}}, @{Name='name';Expression={$_.Name}}, @{Name='vorname';Expression={$_.givenName}}, @{Name='Beschreibung';Expression={$_.description}}, @{Name='Fachbereich';Expression={$_.extensionAttribute2}}, Export-Csv C:\user_de_mitarbeiter.csv -NoTypeInformation -Delimiter ';' Vielen Dank nochmals für deine Zeit. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Februar 2018 Melden Teilen Geschrieben 7. Februar 2018 (bearbeitet) Hmmm .... und Du sagtest noch, dass Du jetzt fitter mit der Powershell bist .... ... Zeilenumbrüche sind nur an bestimmten Stellen erlaubt. Wenn Du einen Parameter angibst, wie z.B. -Property, musst Du ihm auch einen Wert mitgeben. Da darf also kein Zeilenumbruch vor dem ersten Wert sein. An Kommata, Semikola und einigen Punkten kannst Du gern einen Zeilenumbruch machen. Das macht den Code dann im Zweifel hoffentlich besser lesbar. Edit: ooops ... jetzt hab ich nochmal genauer auf Deinen Code geschaut. Das Select-Object brauchst Du nicht zweimal ... und Sort-Object würde ich eher weiter hinten, also, wenn überhaupt, vor den Export packen. Export-CSV braucht ein Pipe davor .... ein Komma genügt da nicht! Edit 2: ... achja ... nach dem Pipe-Symbol sind Zeilenumbrüche natürlich auch erlaubt. bearbeitet 7. Februar 2018 von BOfH_666 1 Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 7. Februar 2018 Autor Melden Teilen Geschrieben 7. Februar 2018 Danke dir vielmals BOfH_666 !!! Funktioniert ! Ich habe eine Pipe vor Export-CSV vergessen und wie du schon geschrieben hast, hatte ich zu viele Zeilenumbrüche. Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 8. Februar 2018 Autor Melden Teilen Geschrieben 8. Februar 2018 Ich habe noch wirklich eine letzte Frage dazu und würde das Thema als gelöst markieren - wie Markiere ich das Thema als gelöst, eine hilfreichste Antwort auswählen? Wie kann ich spezielle OU´s auswählen beim Exportieren? Ich habe unter der OU "User" 5 verschiedene OU`s mit User´s und wollte gerne beim Exportieren 3 OU`s auswählen die in einem CSV-Datei gespeichert werden soll. Ich habe es mit "ForEach-Object" versucht aber kein Erfolg. oder hinter OU=Firma1 habe ich auch OU=Firma2 geschrieben - kein Erfolg. Für den letzten Schritt wäre ich wirklich ziemlich dankbar von euch. get-aduser -SearchBase 'OU=Firma1,OU=User,OU=Abteilungen,DC=domäne,DC=Unternehmen,DC=de' -filter 'objectClass -eq "user"' -Properties * | Danke schon mal für den Super Mega Informative Hilfe ! Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 8. Februar 2018 Melden Teilen Geschrieben 8. Februar 2018 (bearbeitet) Wie Du hier einen Thread als Beantwortet kennzeichnest, kann ich Dir tatsächlich gar nicht sagen. Ich hatte noch nie die Gelegenheit, das zu selbst zu tun. Ich würde aber davon ausgehen, dass Du als Ersteller des Threads irgendwo einen Button hast, der das erledigt. Wie Du in der Doku zum cmdlet Get-ADUser sehen kannst, nimmt der Parameter -SearchBase nur einen einzelnen String-Wert entgegen ([-SearchBase <String>] wenn mehrere erlaubt wären, würde es so aussehen: [-SearchBase <String>[]]). Du hast also mindestens 2 Wege, das Problem anzugehen. 1. - Du schränkst die Suche schon beim Ermitteln der Daten ein: Du kannst die betreffenden "Suchbasen" in ein Array packen und mit einer Foreach-Schleife abarbeiten. Damit die Ausgabe aller 3 "Durchläufe" dann trotzdem in einer einzigen CSV-Datei landen, hängst Du ans Export-CSV cmdlet einfach ein -Append an. 2. - Du beginnst die Suche erstmal in der "Parent" - OU und filterst mittels eines Where-Object cmdlets die unerwünschten Ergebnisse "hinten" raus. Wie Du die Filterkriterien setzt, hängt dann von Deiner OU-Struktur ab. Du könntest unerwünschte OUs explizit ausfiltern oder gewünschte OUs einschließen. Da müsstest Du dann schauen, was in Deinem Fall das Beste für Dich ist. bearbeitet 8. Februar 2018 von BOfH_666 Zitieren Link zu diesem Kommentar
MercedesCR7 1 Geschrieben 13. Februar 2018 Autor Melden Teilen Geschrieben 13. Februar 2018 @BOfH_666 Könntest du mir bitte ein letztes mal helfen. Irgendwie bekomme ich es mit Foreach-Schleife nicht hin. Ich habe das mal so versucht, funktioniert, aber dabei werden alle unter Ordner miteinbezogen: $excludedOUs = @('OU=Bundesuser1,OU=User,OU=Groups,DC=domäne,DC=firmadomäne,DC=de','OU=Bundesuser1,OU=User,OU=Groups,DC=domäne,DC=firmadomäne,DC=de') Get-ADUser -filter 'objectClass -eq "user"' -Properties * | Where-Object { $pass = $true foreach($ou in $excludedOUs) {} $pass}|Sort-Object surname | Select-Object -Property EmployeeID,Name,givenName Also Unter User sind über 6 OU´s und ich will nur 2 oder 3 auswählen, wie z.B Bundesuser1 und Bundesuser2. Ich bin auch völlig durcheinander gekommen, zu viel googeln ist auch nicht gut. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 13. Februar 2018 Melden Teilen Geschrieben 13. Februar 2018 (bearbeitet) vor 2 Stunden schrieb MercedesCR7: @BOfH_666 Könntest du mir bitte ein letztes mal helfen. Irgendwie bekomme ich es mit Foreach-Schleife nicht hin. ... und dann nie nie wieder?? Zitat Also Unter User sind über 6 OU´s und ich will nur 2 oder 3 auswählen, wie z.B Bundesuser1 und Bundesuser2. Spräche denn etwas dagegen, einfach nur die gewünschten OUs abzufragen? Also so in etwa: $OU_Liste = 'OU=Bundesuser1,OU=User,OU=Groups,DC=domäne,DC=firmadomäne,DC=de', 'OU=Bundesuser1,OU=User,OU=Groups,DC=domäne,DC=firmadomäne,DC=de' Foreach($OU in $OU_Liste){ Get-ADUser -Filter 'objectClass -eq "user"' -Properties * -SearchBase $OU } So brauchst Du nicht mehr aus dem AD abfragen als Du später benötigst. Ich würde übrigens für Dein "produktives" Script empfehlen, nur die Properties anzugeben, die Du wirklich brauchst und nicht einfach * zu benutzen. Geht meistens schneller und erzeugt nicht so viel Last auf'm DC. bearbeitet 13. Februar 2018 von BOfH_666 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.