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