Скрипт для удаления профиля пользователя только месяца назад с самим Реестром, но должен оставить текущий профиль нетронутым

Прежде всего sry, если этот пост повторяется для удаления профиля.

Если у вас есть правильная ссылка, пожалуйста, опубликуйте ее ниже или сам скрипт.

Вопрос: поскольку у меня много компьютеров с Windows 7 (2400 систем) в качестве операционной системы на них, а пользователи постоянно меняют или меняют место с одного ПК на другой ПК и управляют системой или дисководом C для согласованной системы. производительность или освобождение места - сложная задача.

Я хотел бы иметь сценарий, который удалял бы только старый (No of Months) профиль, а также сам реестр, но должен сохранять текущий профиль также в реестре.

Я нашел скрипт на каком-то форуме, который выполняет свою работу, но не правильным образом, так как он удаляет весь профиль и исключает администратора, администратора и т. Д. Из сценария, но я не могу удалить старый профиль определенного периода времени или даты.

Как еще раз извините, если этот пост выглядит как беспорядок, но помощь приветствуется

1 ответ

Если ваши рабочие станции подключены к домену и у вас есть доступ к изменению групповых политик, все это можно указать в GPO;

Конфигурация компьютера | Политики | Административные шаблоны | Система | Профили пользователей

В качестве альтернативы вы должны посмотреть на delprof2 ( https://helgeklein.com/free-tools/delprof2-user-profile-deletion-tool/), это сделает то, что вам нужно.

Это инструмент командной строки (так что вы можете написать его), и он принимает параметр, чтобы указать, сколько лет профилю должно быть до того, как он может быть удален. Например, эта команда удалит все локальные профили старше 60 дней;

delprof2 /d 60

Он также имеет более широкое применение, например, удаляет только профили, которые являются локальными кешами перемещаемых профилей (игнорируя истинные локальные профили), удаленно удаляя профили (так что вы можете создать сценарий для запуска с сервера и поочередно настроить таргетинг на каждую из ваших рабочих станций), сопоставление с образцом для включения / исключения, так что вы можете указать ему игнорировать определенные профили (например, все учетные записи, начинающиеся с john*).

Это также бесплатно во многих случаях (я цитирую)

"Delprof2 бесплатен для частного использования, для образовательных и некоммерческих организаций. Все другие организации также могут использовать Delprof2 бесплатно, если они позволяют нам публиковать их имя. В противном случае необходимо приобрести коммерческую лицензию".

Это помогает?

Редактировать:

Если вам нужна дополнительная опция, попробуйте этот сценарий или его модификацию. Я нашел его на этом форуме ( http://www.edugeek.net/forums/windows-7/79028-delete-user-profiles-older-than-specified-number-days.html), и он полностью не проверен; Используйте на свой риск. Возможно, вы захотите удалить строку MsgBox, и неиспользуемый период можно скорректировать, изменив значение переменной '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
Другие вопросы по тегам