145920
Goto Top

Abfrage in der Powershell

Habe folgende Abfrage:

Get-ADComputer -Filter{(Operatingsystem -like '*Windows 7 Pro*')} -Properties *  |Where{$_.DistinguishedName -like '*OU=Verwaltung*'} | ft name,operatingsystem,distinguishedName  

Wie kann ich nun mir den DistinguishedName anzeigen lassen, damit er mir dort nur "OU=Verwaltung" anzeigt?
Gibt es dazu eine Möglichkeit?
Kommentar vom Moderator tomolpi am 05.09.2020 um 13:03:52 Uhr
Codetags hinzugefügt

Content-ID: 601245

Url: https://administrator.de/forum/abfrage-in-der-powershell-601245.html

Ausgedruckt am: 22.04.2025 um 20:04 Uhr

145916
145916 02.09.2020 aktualisiert um 12:37:29 Uhr
Goto Top
Moin
Get-ADComputer -Filter {(Operatingsystem -like '*Windows 7 Pro*')} -Properties OperatingSystem | ?{$_.DistinguishedName -like '*OU=Verwaltung*'} | ft name,operatingsystem,distinguishedName,@{n='OU';e={[regex]::Match($_.DistinguishedName,'(?i)(?<=(OU|CN)=)(.*)(?=,(OU|DC))').Value}}  
Gruß eagle
145920
145920 02.09.2020 aktualisiert um 12:32:21 Uhr
Goto Top
Das ist die Ausgabe die ich jetzt erhalte:

name operatingsystem distinguishedName OU
--------------- ----------------- --
NBASUS-002 Windows 7 Professional CN=XXX,OU=XXXX,OU=XXX, Notebooks
OU=XXXX,OU=Verwaltung,OU=XXXX,DC=XXXX,DC=XXXX


Bei DistinguishedName sollte aber nur OU=Verwaltung angezeigt werden. Alle anderen OU eben nicht.
Ist das so dann überhaupt möglich?


Gruß Saih
145920
145920 02.09.2020 aktualisiert um 12:45:57 Uhr
Goto Top
Danke, hab ich jetzt irgendwie übersehen. Eine Frage noch: Geht das vom Befehl her vielleicht noch einfacher? Bin ein totaler Anfänger was Powershell betrifft.

Deswegen die Frage nochmal. Und danke für die schnelle Antwort.

Hab sie für mich angepasst:
Get-ADComputer -Filter {(Operatingsystem -like '*Windows 7 Pro*')} -Properties OperatingSystem | ?{$_.DistinguishedName -like '*OU=Verwaltung*'} | ft name,operatingsystem,@{n='OU';e={[regex]::Match($_.DistinguishedName,'OU=Verwaltung').Value}}

Hier meine Ausgabe:
name operatingsystem OU
--------------- --
NBASUS-002 Windows 7 Professional OU=Verwaltung
145916
Lösung 145916 02.09.2020 aktualisiert um 12:44:57 Uhr
Goto Top
Zitat von @145920:

Danke, hab ich jetzt irgendwie übersehen. Eine Frage noch: Geht das vom Befehl her vielleicht noch einfacher? Bin ein totaler Anfänger was Powershell betrifft.
Da im DistinguishedName auch Kommata im Namen einer OU vorkommen können, kann man hier nicht den Split Befehl benutzen um universell verwendbar zu bleiben, deswegen etwas mehr Aufwand für den Regex.
145916
145916 02.09.2020 aktualisiert um 12:50:23 Uhr
Goto Top
Zitat von @145920:
Hab sie für mich angepasst:
Get-ADComputer -Filter {(Operatingsystem -like '*Windows 7 Pro*')} -Properties OperatingSystem | ?{$_.DistinguishedName -like '*OU=Verwaltung*'} | ft name,operatingsystem,@{n='OU';e={[regex]::Match($_.DistinguishedName,'OU=Verwaltung').Value}}
Das ist ehrlich gesagt Schwachfug, da kannst du es ja gleich so hardcoded rein schreiben, dafür braucht man kein Regex, denn du checkst ja schon auf das Vorhandensein im Where-Object
.... | select name,OperatingSystem,@{n='distinguishedName;e={'OU=Verwaltung'}}  
Das obige Regex Konstrukt war für eine automatisierte Extrahierung aus dem DN wenn man es nicht hard eincoden will.
145920
145920 02.09.2020 um 13:04:21 Uhr
Goto Top
Wie gesagt. Bin totaler Anfänger und wollte ja nur für mich die Ausgabe so angepasst haben, dass ich eine Ausgabe bekomme, mit der ich was anfangen kann. Dass man es natürlich so allgemein wie möglich halte sollte, weiß ich. Ich weiß auch grade leider nicht was du mit dem Split-Befehl meinst. Tut mir leid, wenn ich nicht genau verstehe was du mit dem Split-Befehl meinst. da ich noch zu neu bin. Aber ich danke dir trotzdem für deine Antwort, die mir weitergeholfen hat.
;o)