Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Ray_Jay

Powershell Script Benutzer Verschieben

Empfohlene Beiträge

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 module
Import-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 OU
foreach ($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.

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 von NilsK

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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?

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 von NilsK

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Klar kenne ich das. Oben in deinem Skript sehe ich es aber nicht.

 

 

#Import AD module
Import-Module ActiveDirectory

$ErrorActionPreference = "SilentlyContinue"

 

bearbeitet von tesso

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
$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 von daabm

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×