none
Get-Aduser - bestimmte OU´s ausschließen

    Frage

  • Hallo zusammen,

    bin gerade dabei ein Skript zu schreiben, das mir alle Benutzer aus einer bestimmten OU ausgibt und in eine CSV exportiert.

    Das Problem ist, dass in der OU noch weitere OU´s sind und diese sollen bei dem Export ausgeschlossen werden.

    Bin blutiger Anfänger und bin mit Beiträgen aus Foren ziemlich weit gekommen.

    Der Export ohne Ausschluss funktioniert ohne Probleme.

     

     Der Beitrag, der zum diesem Skriptstand geführt hat den Titel:

    Get-ADuser - OU ausschliessen

    (Kann leider noch keinen Link teilen)

    $exclude = 'Ordner1', 'Ordner2', 'Ordner3'
    
    $pattern = $exclude -join '|'
    
    $users = Get-ADUser -Filter * -Properties Surname, GivenName, department, officephone,
    mobilephone, title, office, DistinguishedName -Searchbase
    "OU=Benutzer,DC=MYDC"| Where-Object DistinguishedName -NotMatch $patternWen | Sort-Object surname |
    Select-Object Surname, GivenName, department, officephone, mobilephone, title,
    office | export-csv C:\Export.csv -notypeinformation -delimiter "`t"
    -encoding UTF32
    
     


     

    Hab es auch schon versucht den Export weg zulassen und den Inhalt von $user auf der Console ausgeben zulassen.

    • Das Resultat bei beiden Varianten keine Daten auf der Konsole und keine Daten in der CSV

     

    Es muss irgendwo in dem Skript ein logischer Fehler enthalten sein, den ich aber leider nicht finde.

     

     

    Mit dieser CSV soll dann anschließend eine dynamische Telefonliste erstellt werden können.

     

    Danke für jede Hilfe
    Dienstag, 15. Mai 2018 18:04

Antworten

  • Ooooops ... man wird alt wie ne Kuh und lernt immernoch dazu. :-D ;-)

    Ich hatte das selbst noch nie gebraucht  und deshalb auch noch nie getestet. Statt dem -SearchScope Base musst Du -SearchScope OneLevel verwenden.

    Tatsächlich farg ich mich grade, wozu der SearchScope Base überhaupt gut sein soll. Mir fällt grad keine sinnvolle Verwendung ein.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 13:26

Alle Antworten

  • Hallo Dominik und willkommen im deutschen Powershell Forum.

    Probier mal das hier:

    Get-ADUser -Filter * -Properties Department, officephone,mobilephone, title, office -Searchbase "OU=Benutzer,DC=MYDC" -SearchScope Base | 
        Select-Object -Property Surname, GivenName, Department, OfficePhone, MobilePhone, Title, Office |
            Sort-Object -Property surname |
                Export-Csv -Path C:\Export.csv -NoTypeInformation -Delimiter ';' -Encoding UTF8

    Bei Get-ADUser brauchst Du beim Parameter -Properties nur die Attribute angeben, die nicht sowieso im Standard-Output enthalten sind. Du kannst die "Suchtiefe" mit dem Parameter -SearchScope präzisieren. Base beschränkt sie auf die aktuelle Ebene.

    Beim Export-Csv ist beim -Encoding UTF8 meistens mehr als ausreichend. UTF32 macht Deine Datei im Zweifel nur größer, ohne einen Mehrwert zu liefern. Meistnes ist ein Semikolon als -Delimiter auch günstiger als ein Tabstop. Damit kann z.B. ein deutsches Excel ohne weiteres umgehen und es macht auch beim eventuell nötigen Import meistens weniger Probleme.

    Na denn ... viel Spaß!


    Best regards,

    (79,108,97,102|%{[char]$_})-join''



    • Bearbeitet BOfH_666 Dienstag, 15. Mai 2018 19:20
    Dienstag, 15. Mai 2018 19:18
  • Moin,

    der Grund, warum Du keine Daten kriegst, liegt hier:

    Where-Object DistinguishedName -NotMatch $patternWen
    Die Variable $patternWen wird nirgends gesetzt, und damit matchst Du gegen einen leeren String. Und da jeder String gegen einen leeren String matcht, ist das Ergebnis von -notmatch eben leer.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort vorgeschlagen BeatYa Donnerstag, 17. Mai 2018 06:59
    Dienstag, 15. Mai 2018 19:36
  • Hallo zusammen,

    danke für die schnellen Antworten.

    Konnte es leider nicht schneller testen, da ich Berufsschule hatte.

    Heute war es so weit und hab deinen Vorschlag gleich ausprobiert, aber leider waren in der Csv-Datei in der Zelle A1 nur diese Zeichen: "".

    Die Searchbase habe ich natürlich wieder richtig eingestellt. Es wurde auch kein Fehler ausgegeben.

    Mit freundlichen Grüßen

    Dominik Hartl

    Dienstag, 22. Mai 2018 08:14
  • Dominik,

    zum Debuggen einfach erst mal den ersten Teil ohne Pipeline in der Konsole ausführen und sehen, ob Du die erwareteten Ergebisse bekommst. Wenn das funktioniert, erweiterst Du einfgach jeweils um einen "Pipeline-Schritt" usw. ... bis Du siehst, wo der Fehler auftritt ... also erstmal das hier:

    Get-ADUser -Filter * -Properties Department, officephone,mobilephone, title, office -Searchbase "OU=Benutzer,DC=MYDC" -SearchScope Base 
    ... dann das hier:
    Get-ADUser -Filter * -Properties Department, officephone, mobilephone, title, office -Searchbase "OU=Benutzer,DC=MYDC" -SearchScope Base | 
        Select-Object -Property Surname, GivenName, Department, OfficePhone, MobilePhone, Title, Office
    ... usw ...


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 09:20
  • Hallo,

    danke für den Tipp. Gleich bei dem ersten Code ohne Pipeline kommt keine Ausgabe und kein Fehler, wenn man aber das "-SearchScope Base" weglässt kommen alle Benutzer.

    Habe dazu auch im Internet etwas gefunden:

    "https://richardspowershellblog.wordpress.com/2012/02/24/ad-search-scopes/"

    Wenn ich in dem Script statt Get-ADUser, Get-ADObjekt schreibe kommen in der CSV auch nur diese Zeichen "".

    Ist euch da etwas bekannt wie dieses Problem gelöst werden kann?

    Mit freundlichen Grüßen

    Dominik Hartl

    Dienstag, 22. Mai 2018 11:18
  • Wenn Du mit dem SearchScope "Base" keine Ausgabe erhältst, dann sind in der von Dir abgefragten Ebene keine User-Objecte anthalten.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 12:14
  • Wenn User-Objecte ganz normale AD-Benutzer sind, dann sind auf der angegebenen Ebene Benutzer vorhanden.

    Wenn ich die SearchScope Base weglasse kommen alle Benutzer auf der Searchbase Ebene und denen darunter.

    Danke, dass du so schnell antwortest. Ist nicht selbstverständlich. Besonders bei einem Anfänger wie mir.

    Mit freundlichen Grüßen

    Dominik Hartl

    Dienstag, 22. Mai 2018 12:44
  • Ooooops ... man wird alt wie ne Kuh und lernt immernoch dazu. :-D ;-)

    Ich hatte das selbst noch nie gebraucht  und deshalb auch noch nie getestet. Statt dem -SearchScope Base musst Du -SearchScope OneLevel verwenden.

    Tatsächlich farg ich mich grade, wozu der SearchScope Base überhaupt gut sein soll. Mir fällt grad keine sinnvolle Verwendung ein.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 13:26
  • Vielen Dank jetzt hat es fast perfekt funktioniert.

    Nur noch eine Kleinigkeit: Delimiter ist ";" eingestellt, aber in der csv wir der der Tabulator verwendet.

    Muss das in Excel selbst umgestellt werden?

    Bin so froh, dass ich mit eurer Hilfe so weit gekommen bin. Danke.

    Bin sehr zufrieden mit dem TechNet und auf mit der Community.

    Werde mich nächstes mal gerne wieder hier melden.

    Dienstag, 22. Mai 2018 14:08
  •  Delimiter ist ";" eingestellt, aber in der csv wir der der Tabulator verwendet.

    Nee  ... Wenn das Semikolon als Delimiter-Parameter angegeben ist, dann landet das Semikolon auch als Delimiter in der CSV-Datei. Für eine deutsche Windows-Installation ist das Semikolon sehr empfehlenswert, weil Excel damit direkt eine CSV-Datei erkennt und sie korrekt importiert - jedenfalls war das auf meinen Systemen bisher immer so. Wenn Du was Anderes brauchst, kannst Du natürlich einstellen, was Du gerne möchtest. Der Standard für eine CommaSeperatedList (CSV) ist das Comma. ;-)

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 14:33
  • Nachdem ihr mir dazu geraten habt das Semikolon zu verwenden, habe ich den Code geändert. Nach der Änderung wird aber immer noch mit dem Tabulator getrennt, obwohl ich den Delimiter ";" verwende.

    Dienstag, 22. Mai 2018 15:40
  • Hmmmm .... ich lehn mich mal 'n Stück weit aus dem Fenster und sage:  Geht so gar nicht. So'n Computer ist ja schließlich doof und macht nur das was man ihm sagt.
    Aber ohne den Code zu sehen, den Du wirklich benutzt, kann ich dazu nicht wrírklich was sagen.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 22. Mai 2018 21:22
  • Das wäre der Code den ich verwende:

    Get-ADUser -Filter * -Properties Department, officephone, mobilephone, title, office -Searchbase "OU=Benutzer, DC=MYDC" -SearchScope OneLevel | 
        Select-Object -Property Surname, GivenName, Department, OfficePhone, MobilePhone, Title, Office |
            Sort-Object -Property surname |
                Export-Csv -Path C:\Export.csv -NoTypeInformation -Delimiter ';' -Encoding UTF8

    Habe es mit einer gekürzten Variante nochmal probiert => gleiches Ergebnis: Tabulator statt Semikolon.

    Dann mach ich mich mal auf die Suche in den Excel Einstellungen.

    Mit freundlichen Grüßen

    Dominik Hartl

    Mittwoch, 23. Mai 2018 06:27
  • Hmmm .... und wenn Du die resultierende CSV-Datei mit einem Editor öffnest, siehst Du keine Semikola?  ... und Du bist auch sicher, dass die Datei neu geschreiben wird?  .... klingt komisch.

    Edit: Wenn ich den Code bei mir ausführe - natürlich mit einer angepassten -SrearchBase - erhalte ich genau das erwartete Ergebnis.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH_666 Mittwoch, 23. Mai 2018 07:40
    Mittwoch, 23. Mai 2018 07:37
  • Ja mit dem Editor kommt das erwartete Ergebnis raus.

    Habe die Datei gelöscht und neu anlegen lassen, aber es bleibt beim Tabulator.

    Mittwoch, 23. Mai 2018 08:07
  • OK, jetzt hast Du mich komplett verwirrt. Die Datei wird doch von Powershell geschrieben. Und wenn sie erstmal geschrieben ist, verändert sie sich nicht von allein. Wenn Du sie also mit dem Editor öffnest und sie hat Semikola als Trennzeichen, dann at sie die auch, wenn Du sie in Excel öffnest. Mit einem normalen in deutsch installierten Excel kannst Du die Datei durch einen Doppelklick öffnen und sie wird als CSV-Datei erkannt und auch entsprechend angezeigt. Wie kommst Du denn da jetzt immer wieder auf den Tabutlator als Trenner?

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 23. Mai 2018 08:35
  • Ja möchte man denken, aber ich habe eine ganz normale deutsche Excel-Version und wenn ich sie damit öffne wird der Tabulator als Trennzeichen verwendet.

    Öffnen mit -> Editor wird als Trennzeichen das Semikolon verwendet.

    Mittwoch, 23. Mai 2018 10:33
  • Ja möchte man denken, aber ich habe eine ganz normale deutsche Excel-Version und wenn ich sie damit öffne wird der Tabulator als Trennzeichen verwendet.

    Öffnen mit -> Editor wird als Trennzeichen das Semikolon verwendet.


    Ja, dann musst Du in Excel halt nicht den Doppelklick, sondern den Import-Assistenten verwenden und Semikolon als Trennzeichen auswählen. In der CSV-Datei steht ja offenbar das Semikolon ;-)

    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Mittwoch, 23. Mai 2018 10:57
  • Habe es vor kurzem nochmal getestet und da wurde es mit Semikolon exportiert, obwohl ich nichts umgestellt bzw. eingestellt habe.

    Danke an alle die geholfen habe.

    Mit freundlichen Grüßen

    Dominik Hartl

    Montag, 28. Mai 2018 06:45
  • Habe es vor kurzem nochmal getestet und da wurde es mit Semikolon exportiert, obwohl ich nichts umgestellt bzw. eingestellt habe.

    Hmmm .... also dazu verkneif ich mir jetzt den Kommentar.  ;-)

    Danke an alle die geholfen habe.

    Wir arbeiten hier zwar nicht für Geld, sondern im Prinzip für "Anerkennung", die drückst Du aber bitte nicht nur mit einem Danke aus, sondern auch mit dem Markieren der entsprechenden Antwort als "die Antwort" Deines Problems. So finden auch andere, die eventuell das gleiche oder ein ähnliches Problem haben, schneller die Lösung.

    Danke


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Montag, 28. Mai 2018 07:52