chkdsk

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 432725

Url: https://administrator.de/forum/computer-im-active-directory-filtern-432725.html

Ausgedruckt am: 25.07.2025 um 04:07 Uhr

chkdsk
chkdsk 26.03.2019 um 14:42:52 Uhr
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?
Logan000
Logan000 26.03.2019 um 14:45:53 Uhr
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.
chkdsk
chkdsk 26.03.2019 um 14:51:36 Uhr
Vielen Dank für die Info, es funktioniert aber nicht. Es geht zwar durch die Powershell ohne Fehler durch aber es gibt keine Ausgabe.
138810
138810 26.03.2019 aktualisiert um 15:01:31 Uhr
Der Fiter ist ja auch falsch und bei deinem Filter fehlen die Wildcards (*) im String.
chkdsk
chkdsk 26.03.2019 aktualisiert um 15:30:24 Uhr
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?
erikro
erikro 26.03.2019 um 15:37:32 Uhr
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
chkdsk
chkdsk 26.03.2019 um 15:45:16 Uhr
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?
138810
138810 26.03.2019 aktualisiert um 15:54:27 Uhr
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.
chkdsk
chkdsk 26.03.2019 um 15:59:32 Uhr
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?
erikro
erikro 26.03.2019 um 16:01:31 Uhr
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
138810
138810 26.03.2019 aktualisiert um 16:03:44 Uhr
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?.
erikro
erikro 26.03.2019 um 16:07:45 Uhr
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
138810
138810 26.03.2019 aktualisiert um 16:10:49 Uhr
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.
erikro
erikro 26.03.2019 um 16:23:16 Uhr
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.
138810
138810 26.03.2019 aktualisiert um 16:33:37 Uhr
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....
erikro
erikro 26.03.2019 um 16:57:34 Uhr
Noch zwei Links für den TO:
martinlehmann.de/wp/powershell-openbook-kostenlos-online/
powershellpraxis.de/

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

Und dann natürlich noch:
docs.microsoft.com/de-de/powershell/
chip-monkey
chip-monkey 27.03.2019 um 14:05:03 Uhr
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.
chkdsk
chkdsk 28.03.2019 um 07:59:22 Uhr
Vielen Dank an alle. Ihr habt mir sehr weiter geholfen.
Die Links werde ich mir auch mal ansehen face-smile
erikro
erikro 28.03.2019 um 08:08:58 Uhr
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