Hier ein kleines PowerShell Script um User und Computer Objekte in einem Active Directory zu suchen, verschieben und sperren.

#Wielange inaktiv in Tagen?
$daysinactive = 30

#Wo die User Suchen?
$userbase = "ou=Benutzer,dc=intra,dc=musterfirma,dc=tld"

#Wohin die User verschieben?
$userto = "OU=_Inaktiv,dc=intra,dc=musterfirma,dc=tld"

#Wo Clients suchen?
$clientbase = "OU=_Clients,dc=intra,dc=musterfirma,dc=tld"

#Wohin die Clients verschieben?
$clientto = "OU=_Deaktiviert_Clients,DC=intra,DC=musterfirma,DC=tld"

#MailServer
$smtpServer = "exchange.musterfirma.tld"

#Absender?
$smtpFrom = "admin@musterfirma.tld"

#Empfaenger?
$smtpTo = "admin@musterfirma.tld"

#E-Mail Betreff setzen
$messageSubject = "Deaktivierte Objekte"

#TXT File welches per E-Mail versendet wird
$helpfile = "c:\temp\deaktiviert.txt"

#--------------AB HIER NICHTS MEHR AENDERN-------------

#Zeitspanne setzen
$timespan = New-Timespan –Days $daysinactive
echo "---------------------------------------------------------USER---------------------------------------------------------" > $helpfile
#---------------------------------------------------------USER---------------------------------------------------------
#Suche alle AD User die X Tage nicht angemeldet waren in $userbase. Weitere Werte laden - Name, Abteilung, DN -> In Text Datei
Search-ADAccount –UsersOnly –AccountInactive -TimeSpan $timespan -SearchBase $userbase | Get-ADuser -Properties Department,Title | Select Name,Department,DistinguishedName >> $helpfile
#Verschiebe diese Nutzer in $userto
Search-ADAccount –UsersOnly –AccountInactive -TimeSpan $timespan -SearchBase $userbase | Move-ADObject -TargetPath $userto
#Deativiere alles in der OU Inaktiv,_ehemalige_Mitarbeiter
Search-ADAccount –UsersOnly –AccountInactive -TimeSpan $timespan -SearchBase $userto | Disable-ADAccount
#---------------------------------------------------------USER-----------------------------------------------------
echo "---------------------------------------------------------CLIENTS---------------------------------------------------------" >> $helpfile
#---------------------------------------------------------CLIENTS-----------------------------------------------------
#Suche alle AD Computer die X Tage nicht angemeldet waren in $clientbase. Weitere Werte laden - OS, Version, DC -> In Text Datei
Search-ADAccount -ComputersOnly -AccountInactive -TimeSpan $timespan -SearchBase $clientbase | Get-ADComputer -Property name,operatingSystemVersion,operatingSystem | Select Name,operatingSystem,DistinguishedName >> $helpfile
#Verschoene alle AD Computer die X Tage nicht angemeldet waren in $clientto
Search-ADAccount -ComputersOnly -AccountInactive -TimeSpan $timespan -SearchBase $clientbase | Move-ADObject -TargetPath $clientto
#Deaktiviere alles ind er OU $clientto
Search-ADAccount -ComputersOnly -AccountInactive -TimeSpan $timespan -SearchBase $clientto | Disable-ADAccount
#---------------------------------------------------------CLIENTS-----------------------------------------------------

#Sende Mail-------->

#E-Mail Body leeren
[string]$messagebody = ""
$logs = Get-Content $helpfile
#Nach jedem eintrag einen Zeilenumbruch
foreach ($log in $logs)
{
$messagebody = $messagebody + $log + "`r`n"
}
#Mail an SMTP Server senden
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($smtpFrom,$smtpTo,$messagesubject,$messagebody)
#Ende Mail<-----------

#Textdateien entfernen.
Remove-Item $helpfile