chkdsk
Goto Top

Computer im Active Directory filtern

Hallo Zusammen,
ich möchte über die Powershell Computer im Active Directory filtern.

Als Beispiel:
dsquery computer "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER" -limit 0 -o rdn  

listet mir alle Computer auf, die sich unter dem angegeben Pfad befinden. Das funktioniert.

Get-ADComputer -Filter "OperatingSystem -like 'Win7'" * -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER"  

funktioniert nicht.
Es kommt immer die Fehlermeldung

Get-ADComputer : Es wurde kein Positionsparameter gefunden, der das Argument "*" akzeptiert.  
In Zeile:1 Zeichen:1
+ Get-ADComputer -Filter "OperatingSystem -like 'Win7'" * -SearchBase " ...  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADComputer], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

Ich komme einfach nicht drauf, warum es nicht funktioniert.

Content-Key: 432725

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

Printed on: April 20, 2024 at 07:04 o'clock

Member: chkdsk
chkdsk Mar 26, 2019 at 13:42:52 (UTC)
Goto Top
Wenn ich jetzt folgendes eingebe, geht das zwar durch in der powershell, es passiert aber nichts
Get-ADComputer -Filter 'OperatingSystem -like "Windows 7"' -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER"  

Hat niemand eine Idee?
Member: Logan000
Logan000 Mar 26, 2019 at 13:45:53 (UTC)
Goto Top
Moin moin
Tausche " & '

So sollte es gehen:
Get-ADComputer -Filter 'OperatingSystem -like "Win7*"' -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER"  

Gruß L.
Member: chkdsk
chkdsk Mar 26, 2019 at 13:51:36 (UTC)
Goto Top
Vielen Dank für die Info, es funktioniert aber nicht. Es geht zwar durch die Powershell ohne Fehler durch aber es gibt keine Ausgabe.
Mitglied: 138810
138810 Mar 26, 2019 updated at 14:01:31 (UTC)
Goto Top
Der Fiter ist ja auch falsch und bei deinem Filter fehlen die Wildcards (*) im String.
Member: chkdsk
chkdsk Mar 26, 2019 updated at 14:30:24 (UTC)
Goto Top
Hier meine folgende Lösung. Das funktioniert auch ganz prächtig.
Get-ADComputer -Filter {OperatingSystem -like '*Windows 7*'} -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER"  

Wie würde der weitere Ablauf aussehen, wenn das Skript mir die Ergebnisse vernünftig in eine .xml Datei exportieren soll?
Member: erikro
erikro Mar 26, 2019 at 14:37:32 (UTC)
Goto Top
Moin,

 Get-ADComputer -Filter {OperatingSystem -like '*Windows 7*'} -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER" | export-clixml datei.xml  

schreibt Dir das Ergebnis in datei.xml

hth

Erik
Member: chkdsk
chkdsk Mar 26, 2019 at 14:45:16 (UTC)
Goto Top
Das ist prinzipiell schon der richtige Ansatz. Vielen Dank dafür face-smile
Ich hätte die Ausgabe in der xml allerdings gerne so wie im eigentlichen Powershell Fenster. Ist das möglich?
Mitglied: 138810
138810 Mar 26, 2019 updated at 14:54:27 (UTC)
Goto Top
Ich hätte die Ausgabe in der xml allerdings gerne so wie im eigentlichen Powershell Fenster. Ist das möglich?
Dann ist's aber keine valide XML-Datei mehr face-smile. Du weist aber schon was eine XML Datei ist??

Andernfalls sind format-list und format-table deine Freunde, deren Ausgabe ist aber wie gesagt nicht XML konform.
Member: chkdsk
chkdsk Mar 26, 2019 at 14:59:32 (UTC)
Goto Top
Habe ich auch gerade gemerkt face-smile deswegen möchte ich auf csv umsteigen.
Die Ausgabe in der eigentlichen Powershell lautet ja wie folgt.
DistinguishedName : 
DNSHostName       : 
Enabled           : 
Name              : 
ObjectClass       : 
ObjectGUID        : 
SamAccountName    : 
SID               : 
UserPrincipalName :
Ist es möglich nur die Zeile Name in jeweils eine neue Zeile in der csv schreiben zu lassen?
Member: erikro
erikro Mar 26, 2019 at 15:01:31 (UTC)
Goto Top
Moin,

Get-ADComputer -Filter {OperatingSystem -like '*Windows 7*'} -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER" | export-clixml datei.xml; get-content datei.xml  

Aber willst Du das wirklich? Ich würde das ja lieber mit einem netten CSS formatieren und im Browser angucken. face-wink

hth

Erik
Mitglied: 138810
138810 Mar 26, 2019 updated at 15:03:44 (UTC)
Goto Top
Ist es möglich nur die Zeile Name in jeweils eine neue Zeile in der csv schreiben zu lassen?
Get-ADComputer -Filter "OperatingSystem -like 'Windows 7*'" -SearchBase "OU=PLATZHALTER,OU=PLATZHALTER,OU=PLATZHALTER,DC=PLATZHALTER,DC=PLATZHALTER" | select Name | export-csv -Path "C:\datei.csv" -NoType -Encoding UTF8 -Delimiter ";"  

Du solltest dir dringend mal das Powershell-Manual reinziehen, du hantierst hier mit dem AD und hast noch nicht mal die Basics drauf?.
Member: erikro
erikro Mar 26, 2019 at 15:07:45 (UTC)
Goto Top
Moin,

und mir stellt sich die Frage, warum ich denn eine Liste mit nur den Rechnernamen in einem CSV brauche. Das sieht dann ja so aus:

Name
Server1
Server2
Rechner1
Rechner2

Da reicht doch eine einfache Textdatei, oder?

Liebe Grüße

Erik
Mitglied: 138810
138810 Mar 26, 2019 updated at 15:10:49 (UTC)
Goto Top
Jepp, das klingt mir sehr nach "erst irgendwas im Kopp ala mach mer mal" und erst dann über ein stichhaltiges Konzept nachdenken und wieder alles neu machen face-big-smile.
Member: erikro
erikro Mar 26, 2019 at 15:23:16 (UTC)
Goto Top
Naja, für mich klingt das so, dass der Lehrling im ersten Jahr die Aufgabe bekommen hat, rauszufinden, welche Rechner bis Ende des Jahres auf Windows 8/10 gehoben werden müssen. face-wink Wir haben alle mal klein angefangen.
Mitglied: 138810
138810 Mar 26, 2019 updated at 15:33:37 (UTC)
Goto Top
Joa, mal wieder das Pferd von hinten aufgezäumt. Also erst mal den dreifachen Salto vorwärts vor dem Aufsteigen lernen face-wink. Na denn, viel Spaß noch hier beim Rodeo....
Member: erikro
erikro Mar 26, 2019 at 15:57:34 (UTC)
Goto Top
Noch zwei Links für den TO:
https://www.martinlehmann.de/wp/powershell-openbook-kostenlos-online/
http://www.powershellpraxis.de/

Letzteres ist zwar schon ein wenig älter, aber immer noch hilfreich.

Und dann natürlich noch:
https://docs.microsoft.com/de-de/powershell/
Member: chip-monkey
chip-monkey Mar 27, 2019 at 13:05:03 (UTC)
Goto Top
Ich hab das ganze in eine Variable gepackt

$computers = Get-ADComputer -filter * -SearchBase "OU=TestOU,OU=test,OU=GPO,DC=contoso,DC=com" -Properties Name, operatingSystem  

Dann könnte man zum Beispiel mit einer for each schleife

foreach ($computer in $computers) {
write "$computername, $computerOS, $GroupObj, $mitglied" >> \\fs01\Austausch\test.txt  
}

alles in eine datei packen lassen.
Member: chkdsk
chkdsk Mar 28, 2019 at 06:59:22 (UTC)
Goto Top
Vielen Dank an alle. Ihr habt mir sehr weiter geholfen.
Die Links werde ich mir auch mal ansehen face-smile
Member: erikro
erikro Mar 28, 2019 at 07:08:58 (UTC)
Goto Top
Moin,

Zitat von @chip-monkey:

Ich hab das ganze in eine Variable gepackt

$computers = Get-ADComputer -filter * -SearchBase "OU=TestOU,OU=test,OU=GPO,DC=contoso,DC=com" -Properties Name, operatingSystem  
> 

Warum einfach, wenn es auch kompliziert geht? Bei der Aufgabe, einfach nur die Computernamen zu "drucken", die noch mit Windows 7 laufen, ist das vollkommen unnötig.

Dann könnte man zum Beispiel mit einer for each schleife

foreach ($computer in $computers) {
> write "$computername, $computerOS, $GroupObj, $mitglied" >> \\fs01\Austausch\test.txt  
> }

Und wo kommen die Variablen $computername, $computerOS ... denn her? Wenn dann so:

foreach($computer in $computers) {
    
    out-file -path outfile.txt -InputObject "$computer.name, $computer.OperatingSystem ..." -append -encoding UTF8  

}

Liebe Grüße

Erik