Powershell: Active Directory nach deaktivierten Computern durchsuchen und nach Betriebssystem filtern
Ich arbeite mich zur Zeit etwas in die Powershell ein und bin am Verzweifeln. Ich möchte auf einem Domänen-Controller alle deaktivierten Windows 7 Computer per Powershell-Script entfernen lassen. Leider klappt es nicht. Hier einer meiner Versuche:
Ich vermute, dass "Search-ADAccount" das Betriebssystem nicht zurückgibt. Ich habe es auch mit "Get-ADComputer" versucht, hier finde ich aber keinen Operator bzw. Attribut für den Deaktiviert-Status.
Habt Ihr eine Lösung oder einen Ansatz mit dem ich das am Besten umsetzten kann?
Danke, der Uhli.
Search-ADAccount -AccountDisabled -ComputersOnly | Where-Object OperatingSystem -like Windows 7* | Remove-ADComputer -Confirm:$false
Ich vermute, dass "Search-ADAccount" das Betriebssystem nicht zurückgibt. Ich habe es auch mit "Get-ADComputer" versucht, hier finde ich aber keinen Operator bzw. Attribut für den Deaktiviert-Status.
Habt Ihr eine Lösung oder einen Ansatz mit dem ich das am Besten umsetzten kann?
Danke, der Uhli.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4173687821
Url: https://administrator.de/forum/powershell-active-directory-nach-deaktivierten-computern-durchsuchen-und-nach-betriebssystem-filtern-4173687821.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
11 Kommentare
Neuester Kommentar
Auch kein Hallo
Vielleicht zur Sicherheit vorher:
Das "-WhatIf" zeigt dir die durchzuführenden Aktionen an, ohne sie wirklich auszuführen
Get-ADComputer -Filter {Enabled -eq $false -and OperatingSystem -like "Windows 7*"} | Remove-ADComputer -Confirm:$false
Vielleicht zur Sicherheit vorher:
Get-ADComputer -Filter {Enabled -eq $false -and OperatingSystem -like "Windows 7*"} | Remove-ADComputer -Confirm:$false -WhatIf
Das "-WhatIf" zeigt dir die durchzuführenden Aktionen an, ohne sie wirklich auszuführen
Oder alternativ auch
wenn man bei Search-ADAccount bleiben will.
Search-ADAccount -ComputersOnly -AccountDisabled | Get-ADComputer -Properties Operatingsystem | ? Operatingsystem -like "Windows 7*" | Remove-ADComputer -Confirm:$false
Moin,
probier es mal mit
Quelle: https://sid-500.com/2019/07/30/powershell-retrieve-list-of-domain-comput ...
Gruß
em-pie
probier es mal mit
Get-ADComputer -Filter 'OperatingSystem -like "Windows 7*" -and enabled -eq "false"' -Properties Name,Operatingsystem,OperatingSystemVersion |
Sort-Object -Property Operatingsystem |
Select-Object -Property Name, Operatingsystem, OperatingSystemVersion
Quelle: https://sid-500.com/2019/07/30/powershell-retrieve-list-of-domain-comput ...
Gruß
em-pie
Klar:
Mit -WhatIf:
Eventuell mit -Searchbase nach OU filtern und unbedingt vorher mit -WhatIf testen!
$date = (Get-Date).AddYears(-2)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | Remove-ADComputer -Confirm:$false
Mit -WhatIf:
$date = (Get-Date).AddYears(-2)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | Remove-ADComputer -Confirm:$false -WhatIf
Eventuell mit -Searchbase nach OU filtern und unbedingt vorher mit -WhatIf testen!
Zitat von @chaot1coz:
Klar:
Mit -WhatIf:
Eventuell mit -Searchbase nach OU filtern und unbedingt vorher mit -WhatIf testen!
Klar:
$date = (Get-Date).AddYears(-2)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | Remove-ADComputer -Confirm:$false
Mit -WhatIf:
$date = (Get-Date).AddYears(-2)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | Remove-ADComputer -Confirm:$false -WhatIf
Eventuell mit -Searchbase nach OU filtern und unbedingt vorher mit -WhatIf testen!
Sauber, Danke Dir!
-Filter 'lastLogondate -lt $date'
Achtung Fehler, Variablen werden innerhalb von Hochkommas nicht aufgelöst ...Zitat von @chaot1coz:
Achtung Halbwissen...
Microsoft Docs:
Zitat von @4091525239:
-Filter 'lastLogondate -lt $date'
Achtung Fehler, Variablen werden innerhalb von Hochkommas nicht aufgelöst ...Achtung Halbwissen...
Microsoft Docs:
Nöp
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
Single-quoted strings
A string enclosed in single quotation marks is a verbatim string. The string is passed to the command exactly as you type it. No substitution is performed
A string enclosed in single quotation marks is a verbatim string. The string is passed to the command exactly as you type it. No substitution is performed
Ich weiß, dass normalerweise Variablen in Double-Quotes nicht aufgelöst, in diesem Fall aber schon. Das liegt am AD-Modul.
Anstatt mit "nöp" zu antworten, erkläre mir das?
Die Variablen werden in all meinen AD Skripts aufgelöst..
Die Variablenersetzung ist ein Feature des AD-Modules. -Filter wird in einen LDAP-Filter umgewandelt und die Variablen darin ersetzt.
Es ist richtig, dass Powershell die Variablen nicht direkt ersetzt, sondern als String wörtlich an das AD-Modul übergibt. Dieses ersetzt dann die Variablen entsprechend.
Wohl doch kein Fehler
Hier kannst du mehr darüber erfahren.
Anstatt mit "nöp" zu antworten, erkläre mir das?
Die Variablen werden in all meinen AD Skripts aufgelöst..
Die Variablenersetzung ist ein Feature des AD-Modules. -Filter wird in einen LDAP-Filter umgewandelt und die Variablen darin ersetzt.
Es ist richtig, dass Powershell die Variablen nicht direkt ersetzt, sondern als String wörtlich an das AD-Modul übergibt. Dieses ersetzt dann die Variablen entsprechend.
Wohl doch kein Fehler
Hier kannst du mehr darüber erfahren.