Zum Inhalt wechseln


Foto

Powershell Script Benutzer Verschieben

Windows Server 2012 R2

  • Bitte melde dich an um zu Antworten
11 Antworten in diesem Thema

#1 Ray_Jay

Ray_Jay

    Registered User

  • 6 Beiträge

 

Geschrieben 11. Mai 2017 - 11:40

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.

 

 


MCITP SA / EA

#2 NilsK

NilsK

    Expert Member

  • 12.466 Beiträge

 

Geschrieben 11. Mai 2017 - 12:07

Moin,

 

ich würde das nicht selbst bauen, sondern OldCmp nutzen.

 

[OldCmp]
http://joeware.net/f...ldcmp/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, 11. Mai 2017 - 12:12.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 BOfH_666

BOfH_666

    Junior Member

  • 147 Beiträge

 

Geschrieben 11. Mai 2017 - 12:29

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?


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#4 Ray_Jay

Ray_Jay

    Registered User

  • 6 Beiträge

 

Geschrieben 11. Mai 2017 - 12:45

Moin,

 

ich würde das nicht selbst bauen, sondern OldCmp nutzen.

 

[OldCmp]
http://joeware.net/f...ldcmp/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:


MCITP SA / EA

#5 tesso

tesso

    Board Veteran

  • 2.263 Beiträge

 

Geschrieben 11. Mai 2017 - 13:21

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?



#6 Ray_Jay

Ray_Jay

    Registered User

  • 6 Beiträge

 

Geschrieben 11. Mai 2017 - 13:27

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?


  • Gipsy gefällt das
MCITP SA / EA

#7 NilsK

NilsK

    Expert Member

  • 12.466 Beiträge

 

Geschrieben 11. Mai 2017 - 13:28

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, 11. Mai 2017 - 13:31.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#8 BOfH_666

BOfH_666

    Junior Member

  • 147 Beiträge

 

Geschrieben 11. Mai 2017 - 14:13

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:


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#9 tesso

tesso

    Board Veteran

  • 2.263 Beiträge

 

Geschrieben 11. Mai 2017 - 14:19

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.



#10 Ray_Jay

Ray_Jay

    Registered User

  • 6 Beiträge

 

Geschrieben 11. Mai 2017 - 15:13

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.


MCITP SA / EA

#11 tesso

tesso

    Board Veteran

  • 2.263 Beiträge

 

Geschrieben 11. Mai 2017 - 16:10

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

 

 

#Import AD module
Import-Module ActiveDirectory

$ErrorActionPreference = "SilentlyContinue"

 


Bearbeitet von tesso, 11. Mai 2017 - 16:11.


#12 daabm

daabm

    Expert Member

  • 2.111 Beiträge

 

Geschrieben 12. Mai 2017 - 17:45

$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, 12. Mai 2017 - 17:47.

Greetings/Grüße, Martin

Mal ein gutes Buch über GPOs lesen? Oder ein kleines, aber feines Blog darüber?

Und wenn mir die IT mal auf die Nerven geht - coke bottle design refreshment (-:




Auch mit einem oder mehreren der folgenden Tags versehen: Windows Server 2012 R2