2016-07-08 11 views
-1

ich diese PS-Abfrage haben die distinguishedName von Servern zu erhalten:Ich brauche die erste OU von einem distinguishedName bekommen

$AD = get-adcomputer -filter {OperatingSystem -like '*Server*' -and OperatingSystem -notlike '*2003*'} -property name, description, DistinguishedName | Select name, description, DistinguishedName 

und ich möchte die erste Instanz der OU erhalten, also ich will „OU = Webserver "

CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,etc 

Wie kann ich das tun? Danke

+0

ich mehr nützlichen Starter Beitrag über diese Art von Thema gefunden habe, nur von [Suche hier auf SO] (http://stackoverflow.com/search?q= % 5Bpowershell% 5D + Distinguishedname + OU). Ich würde vorschlagen, dass Sie sich diese ansehen und sehen, ob sie Ihnen helfen. Ich möchte dies als eine dup markieren, aber fand noch keine gute. Hast du schon was probiert? – Matt

+0

Ja, ich habe immer zuerst Google versucht Split, aber ich habe nicht die erwarteten Ergebnisse. – JDGEEK

+0

_Triged Splitting, aber ich habe nicht die erwarteten Ergebnisse erhalten. _ Dann sollten Sie das hier gepostet haben, damit wir Ihnen zeigen konnten, wo dieser Code nicht richtig funktionierte. – Matt

Antwort

1

Parsing DNs durch Spaltung auf Kommas ist eine ziemlich gängige Praxis, können aber unzuverlässig sein, da die Namen eingebettete Kommas enthalten (sie mit einem Backslash geschützt werden werden). Hier ist eine reguläre Ausdruck Lösung, die zuverlässigen sein sollte:

$dn = 'CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,DC=domaain,DC=com' 
$OU = $dn -replace '.+?,OU=(.+?),(?:OU|DC)=.+','$1' 

$OU 

Web Servers 
+0

Beautiful ! Vielen Dank – JDGEEK

0

Wenn Sie die DN-Zeichenfolge teilen und das Komma als Trennzeichen verwenden, ist die Organisationseinheit das zweite Element im Array.

Dies kann dann mit eckigen Klammern zurückgegeben werden, um auf ein einzelnes Element des Arrays zuzugreifen. Da es das zweite Element ist, verwenden wir [1], um darauf zuzugreifen, da [0] das erste Element ist.

$DN = "CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,DC=This,DC=Com" 
$DN.Split(",")[1] 
+0

Guter Ausgangspunkt. Ihr Beispiel funktioniert jedoch, wenn ich die Variable als $ AD = get-adcomputer "Server" | Wählen Sie DistinguishedName $ AD.Split (",") [1]. Ich erhalte einen Fehler: Der Methodenaufruf ist fehlgeschlagen, weil [System.Object []] keine Methode namens "split" enthält. $ AD scheint dasselbe zu liefern wie in Ihrem $ DN-Beispiel. – JDGEEK

+0

Wenn ich $ AD -split (",") mache, dann bekomme ich die Split-Liste, ein Element in jeder Zeile, aber wenn ich ein Element ("[1]") auswähle, teilt es für jede Zeile ein Zeichen – JDGEEK