Se as suas estações de trabalho estiverem associadas ao domínio e você tiver acesso para modificar políticas de grupo, tudo isso poderá ser especificado no GPO;
Computer Configuration | Policies | Administrative Templates | System | User Profiles
Alternativamente, você deve olhar para delprof2 ( link ), isso fará o que você precisa.
É uma ferramenta de linha de comando (para que você possa fazer o script) e usa um parâmetro para especificar quantos anos um perfil deve ter antes de ser qualificado para exclusão. Por exemplo, este comando excluirá todos os perfis locais com mais de 60 dias;
delprof2 /d 60
Ele também tem mais usos, como excluir apenas perfis que são caches locais de perfis móveis (ignorando perfis locais verdadeiros), excluindo perfis remotamente (para que você possa fazer script disso para ser executado em um servidor e segmentar cada uma de suas estações de trabalho por exemplo), correspondência de padrões para inclusão / exclusão, assim você pode dizer para ignorar perfis específicos (por exemplo, todas as contas que começam com john *).
Também é gratuito em muitos casos (cito)
"Delprof2 is free for private use, for educational and non-profit organizations. All other organizations may use Delprof2 for free, too, if they allow us to publish their name. Otherwise a commercial license must be purchased."
Isso ajuda?
Editar:
Veja como você parece querer uma opção adicional, tente este script ou uma modificação dele. Eu encontrei neste fórum ( link ) e é totalmente não testado; Use por sua conta e risco. Você provavelmente desejará remover a linha MsgBox e o período não utilizado poderá ser ajustado alterando o valor da variável 'intMaxProfileAge'
On Error Resume Next
Dim objFSO, objWMIService, strComputer, strFilter, intMaxProfileAge, colProfiles, objProfile, dtmLastUseTime
strComputer = "."
strFilter = "SID Like ""S-1-5-21%"" And Not LocalPath Like ""%Administrator%"""
intMaxProfileAge = 14
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("Winmgmts:\" & strComputer & "\root\cimv2")
Set colProfiles = objWMIService.ExecQuery("Select * From Win32_UserProfile Where " & strFilter)
If Not colProfiles Is Nothing Then
For Each objProfile in colProfiles
dtmLastUseTime = CDate(Mid(objProfile.LastUseTime, 7, 2) & "/" & Mid(objProfile.LastUseTime, 5, 2) & "/" & Left(objProfile.LastUseTime, 4) & " " & Mid (objProfile.LastUseTime, 9, 2) & ":" & Mid(objProfile.LastUseTime, 11, 2) & ":" & Mid(objProfile.LastUseTime, 13, 2))
MsgBox DateDiff("d", dtmLastUseTime, Date)
If DateDiff("d", dtmLastUseTime, Date) > intMaxProfileAge Then
Err.Clear
objProfile.Delete_
If Err.Number = -2147024809 Then
'Profile in use, skipping.
ElseIf Err.Number = -2147024751 Then
objFSO.DeleteFolder objProfile.LocalPath, True
ElseIf Err.Number <> 0 Then
'"Error: " & Err.Number & ": " & Err.Description
Else
'Profile Deleted.
End If
End If
Next
End If