Полностью удалить профили пользователей с помощью скрипта

Windows Server, доступ, разрешение, сбой ipsec, принтеры отключены, установка принтера, доверенные сайты, элемент, установочный файл отсутствует, профили пользователей

Вот полезный скрипт, который автоматически удалит ВСЕ пользовательские профили на компьютере с Windows Server 2008 / R2.

ПРЕДУПРЕЖДЕНИЕ!
Это опасная операция, предназначенная для использования администратором, который должен выполнить полную очистку; например, в конце семестра.

Заметка: 
Для целей этого примера мы будем использовать следующий путь для файлов сценария:
D: \ Scripts

  • Скопируйте приведенный ниже код в блокнот и сохраните его как delete_profiles.vbs в D: \ Scripts 
  • Создайте новый файл блокнота и скопируйте следующую строку:

cscript.exe «D: \ Scripts \ delete_profiles.vbs SRVNAME»> «D: \ Scripts \ profile_delete.txt»

  • Где SRVNAME — это имя сервера, на котором вы хотите удалить профили. Перенаправление (>) в этой командной строке действует для создания (или добавления) текстового файла с именем profile_delete.txt это будет действовать для регистрации удалений.
  • Сохранить как delete_all_profiles.bat и сохранить его в D: \ Scripts
  • Создать запланированное задание и запустить delete_all_profiles.bat в нужное время.
    Я предлагаю использовать пакетный файл и настроить запланированное задание, так как оно позволяет запускать сценарий с необходимыми разрешениями.

Вот код для файла скрипта: delete_profiles.vbs

При ошибке возобновить следующее

args = WScript.Arguments.Count

Если аргументы 1, то
  WScript.Echo "использование: delete_profiles SVRNAME"
  WScript.Echo "пример (для удаленных профилей): cscript.exe delete_profiles SOMESERVER"
  WScript.Echo "пример (для локальных профилей): cscript.exe delete_profiles."
  WScript.Quit
End If

strComputer = WScript.Arguments.Item (0)
Установите objWMIService = GetObject ("winmgmts: \\" strComputer "\ Корень \ cimv2")
Установить colProfiles = objWMIService.ExecQuery («Выбрать * из Win32_UserProfile»)
Wscript.Echo "==" Wscript.Arguments.Item (0) "==" vbNewLine

Для каждого объекта в профиле
  Установите objSID = objWMIService.Get ("Win32_SID.SID = '" objProfile.SID "'")
      Если (objSID.ReferencedDomainName = "ДОМЕННОЕ ИМЯ"), то
      Если нет ((objSID.AccountName = "ИМЯ ПОЛЬЗОВАТЕЛЯ ДЛЯ ИСКЛЮЧЕНИЯ") Или (Слева (objSID.AccountName, 2) = "ИМЯ ИМЕНИ ПОЛЬЗОВАТЕЛЯ ИСКЛЮЧИТЬ")) Тогда
          Установите objUserProfile = GetObject ("winmgmts: {impersonationlevel = impersonate}! \\" _
          strComputer "\ Корень \ cimv2: Win32_UserProfile." _
          "SID = '" objProfile.Sid "'")
          objUserProfile.Delete_
     Wscript.Echo objSID.AccountName ";" objSID.ReferencedDomainName ";" objProfile.LocalPath "-" «УДАЛИТЬ»
     End If
End If
следующий

ПРИМЕЧАНИЯ: В строка 19 Вы должны указать доменное имя, которое будет использоваться в сценарии и в строка 20 Вы можете указать учетные записи пользователей, которые не должны быть удалены, например учетные записи администратора.

Предоставлено KresimiK

Ссылка на основную публикацию