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 Sep 05, 2020 um 11:03:52 Uhr
Codetags hinzugefügt

Content-Key: 601245

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

Printed on: April 24, 2024 at 03:04 o'clock

Mitglied: 145916
145916 Sep 02, 2020 updated at 10:37:29 (UTC)
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
Mitglied: 145920
145920 Sep 02, 2020 updated at 10:32:21 (UTC)
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
Mitglied: 145920
145920 Sep 02, 2020 updated at 10:45:57 (UTC)
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
Mitglied: 145916
Solution 145916 Sep 02, 2020 updated at 10:44:57 (UTC)
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.
Mitglied: 145916
145916 Sep 02, 2020 updated at 10:50:23 (UTC)
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.
Mitglied: 145920
145920 Sep 02, 2020 at 11:04:21 (UTC)
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)