Ray_Jay 11 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 Hallo Zusammen, Ich versuche seit 2 Tagen krampfhaft das Problem zu lösen das inaktive Benutzer via Powershell in eine ander OU Verschoeben werden. Das Script für Verschieben der Rechner Objekte funktioniert ohne Probleme, aber die Benutzer lassen sich nicht verschieben. #Import AD moduleImport-Module ActiveDirectory$ErrorActionPreference = "SilentlyContinue"$searchbase = "DC=Domain,DC=de"$EntGroups = "OU=OU Benutzer,DC=domain,DC=de"$groups = Get-ADUser -Filter * -searchbase $EntGroups$inactiveOU = “OU=Alte Benutzer,OU=OU Deaktiviert,DC=domain,"DC=de"# Set the number of days from today since the last logon.$Days = (Get-Date).AddDays(-xTAGE)$User = Get-ADUser -Properties * -Filter {LastLogonDate -lt $Days} -SearchBase $searchbase$DisabledUsers = Get-ADUser -Properties Name,Enabled,LastLogonDate -Filter {(Enabled -eq "False" -and LastLogonDate -lt $Days)} -SearchBase $inactiveOU#Move inactive computer accounts to your inactive OUforeach ($User in $Users) { Set-ADUser $User -Location $User.LastLogonDate | Set-ADUser $User -Enabled $false Move-ADObject -Identity $User.ObjectGUID -TargetPath $inactiveOU Remove group memberships foreach ($group in $groups) { Remove-ADGroupMember -Identity $group -Members $User.ObjectGUID -Confirm:$false }} Habt Ihre eine idee was ich da falsch gemacht habe? Danke schomn mal für eure Hilfe. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 (bearbeitet) Moin, ich würde das nicht selbst bauen, sondern OldCmp nutzen. [OldCmp]http://joeware.net/freetools/tools/oldcmp/index.htm Ansonsten stolpere ich in deinem Code über: Set-ADUser $User -Location $User.LastLogonDate Warum sollte das LastLogonDate eine gültige Location abgeben? Und was für ein Parameter soll das sein? Gruß, Nils bearbeitet 11. Mai 2017 von NilsK Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 Ein Tool, welches seit fast 13 Jahren nicht mehr aktualisiert wurde, würde mich ja erst mal stutzig machen .... ;) ... lässt man das wirklich noch auf aktuelle Installationen los? Zitieren Link zu diesem Kommentar
Ray_Jay 11 Geschrieben 11. Mai 2017 Autor Melden Teilen Geschrieben 11. Mai 2017 Moin, ich würde das nicht selbst bauen, sondern OldCmp nutzen. [OldCmp] http://joeware.net/freetools/tools/oldcmp/index.htm Ansonsten stolpere ich in deinem Code über: Set-ADUser $User -Location $User.LastLogonDate Warum sollte das LastLogonDate eine gültige Location abgeben? Und was für ein Parameter soll das sein? Gruß, Nils Ich Habe des selben Code für das Verschieben der Rechner genommen # Set the number of days from today since the last logon. $Days = (Get-Date).AddDays(-600) $computers = Get-ADComputer -Properties * -Filter {LastLogonDate -lt $Days} -SearchBase $searchbase $DisabledComps = Get-ADComputer -Properties Name,Enabled,LastLogonDate -Filter {(Enabled -eq "False" -and LastLogonDate -lt $Days)} -SearchBase $inactiveOU #Move inactive computer accounts to your inactive OU foreach ($computer in $computers) { Set-ADComputer $computer -Location $computer.LastLogonDate | Set-ADComputer $computer -Enabled $false Move-ADObject -Identity $computer.ObjectGUID -TargetPath $inactiveOU #Remove group memberships foreach ($group in $groups) { Remove-ADGroupMember -Identity $group -Members $computer.ObjectGUID -Confirm:$false } } Bei Rechnern funktioniert es ohne Probleme. Nur die Benutzer wollen einfach nicht. :cry: Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 Es gibt den Parameter "-Location" nur bei Computern, nicht bei Usern. Du musst eine Fehlermeldung in der Powershell bekommen. Warum enthälst du uns die vor? Zitieren Link zu diesem Kommentar
Ray_Jay 11 Geschrieben 11. Mai 2017 Autor Melden Teilen Geschrieben 11. Mai 2017 Ne ich bekomme keine Fehlermeldung. Das ist ja das was mich so ärgert. Wie meinst du das mit dem vorhalten? Willst du den kompletten Script für die Rechner haben? 1 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 (bearbeitet) Moin, Ein Tool, welches seit fast 13 Jahren nicht mehr aktualisiert wurde, würde mich ja erst mal stutzig machen .... ;) ... lässt man das wirklich noch auf aktuelle Installationen los? berechtigt, aber das Tool ist hochgradig bewährt. An den angesprochenen Schnittstellen hat sich nichts geändert, daher gab es wohl keinen Bedarf, es weiter zu bearbeiten. Wäre es nicht zuverlässig, würde Joe es nicht mehr anbieten, er hat einen Ruf zu verlieren. OldCmp hat eine Reihe von Betriebsmodi, arbeitet mit Usern und Computern und erzeugt vorher auch Reports. Zudem ist es viel schneller als jedes PS-Skript. Ich würde daher bei solchen Aufgaben gar nicht über was anderes nachdenken. Gruß, Nils bearbeitet 11. Mai 2017 von NilsK Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 Moin, berechtigt, aber das Tool ist hochgradig bewährt. An den angesprochenen Schnittstellen hat sich nichts geändert, daher gab es wohl keinen Bedarf, es weiter zu bearbeiten. Wäre es nicht zuverlässig, würde Joe es nicht mehr anbieten, er hat einen Ruf zu verlieren. OldCmp hat eine Reihe von Betriebsmodi, arbeitet mit Usern und Computern und erzeugt vorher auch Reports. Zudem ist es viel schneller als jedes PS-Skript. Ich würde daher bei solchen Aufgaben gar nicht über was anderes nachdenken. Gruß, Nils Is jebont ;) ... kommt mit in meine Sammlung ... falls ich's doch mal brauchen kann ... :thumb1: Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 Ne ich bekomme keine Fehlermeldung. Das ist ja das was mich so ärgert. Wenn man schon Fehler sucht, dann ist folgende Zeile kontraproduktiv. $ErrorActionPreference = "SilentlyContinue" Wahrscheinlich bekommst du deshalb keine Fehler angezeigt. Zitieren Link zu diesem Kommentar
Ray_Jay 11 Geschrieben 11. Mai 2017 Autor Melden Teilen Geschrieben 11. Mai 2017 Wenn man schon Fehler sucht, dann ist folgende Zeile kontraproduktiv. $ErrorActionPreference = "SilentlyContinue" Wahrscheinlich bekommst du deshalb keine Fehler angezeigt. Schon mal was von diesem symbol ( # ) am anfang einer befehlszeile gehört. Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 11. Mai 2017 Melden Teilen Geschrieben 11. Mai 2017 (bearbeitet) Klar kenne ich das. Oben in deinem Skript sehe ich es aber nicht. #Import AD moduleImport-Module ActiveDirectory$ErrorActionPreference = "SilentlyContinue" bearbeitet 11. Mai 2017 von tesso Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 12. Mai 2017 Melden Teilen Geschrieben 12. Mai 2017 (bearbeitet) $DisabledUsers = Get-ADUser -Properties Name,Enabled,LastLogonDate -Filter {(Enabled -eq "False" -and LastLogonDate -lt $Days)} -SearchBase $inactiveOU Move-ADObject -Identity $User.ObjectGUID -TargetPath $inactiveOU Was ist das für ein Code? Erst suchst Du nach Usern in Deiner InactiveOU, und dann willst Du sie dorthin verschieben? Schwerer Denkfehler, fürchte ich :cool: Ach ne Quatsch - $DisabledUsers wird ja gar nicht verwendet. Aber das hier sieht auch komisch aus: $User = Get-ADUser -Properties * -Filter {LastLogonDate -lt $Days} -SearchBase $searchbase foreach ($User in $Users) { Du speicherst die Suche in $User, iterierst dann aber über $Users? bearbeitet 12. Mai 2017 von daabm Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.