Назад | Перейти на главную страницу

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

Мы используем перемещаемые профили на наших терминальных серверах (под управлением Win2k8). Иногда бывает необходимо удалить некоторые из них, например, из-за повреждения или что-то протестировать. Они хранят только предпочтительные настройки (например, отображаемые представления в приложениях), никаких пользовательских данных. Конечно, мы можем удалить профили только тогда, когда затронутый пользователь вышел из системы. Однако мы хотели бы иметь возможность удалить профиль в любое время.

Можно ли настроить так, чтобы профиль не обновлялся на сервере профиля при выходе пользователя из системы, а вместо этого удалялся? Это должно произойти только один раз, поэтому, когда он снова войдет в систему, будет создан новый профиль. В качестве альтернативы было бы хорошо, если бы профиль сервера был немедленно удален, а процесс обновления был бы предотвращен один раз.

Или, говоря иначе: как мы можем гарантировать, что конкретный пользователь получит новый, чистый профиль, когда он войдет в систему только в следующий раз?

Пока есть «Предотвратить распространение изменений перемещаемого профиля на сервер» Настройка GPO из «Конфигурация компьютера \ Административные шаблоны \ Система \ Профили пользователей» что меняет "ReadOnlyProfile" ценность в HKLM \ Программное обеспечение \ Политики \ Microsoft \ Windows \ Система regkey, это параметр конфигурации для каждой машины, действительный для всех пользователей, выполняющих вход на ваши терминальные серверы, и поэтому, вероятно, нежелателен. Кроме того, я не уверен, повлияет ли это на профили уже вошедших в систему пользователей.

Я считаю, что единственный способ добиться желаемого - это написать сценарий.

  1. проанализировать файл для списка профилей пользователей для удаления
  2. перебрать этот список
    1. проверьте, вошел ли пользователь в систему
    2. в противном случае удалите ее перемещаемый профиль и локальную копию
  3. подождите некоторое время, прежде чем продолжить
  4. перейти к 1.

Это выглядит достаточно просто, даже для того, чтобы быть написанным как пакет CMD, но, очевидно, использование PowerShell приведет к созданию более элегантного и устойчивого кода.

Установите этот сценарий в качестве сценария выхода из PowerShell, вам нужно будет убедиться, что у пользователей есть соответствующие разрешения в папке реестра «ProfileList». (наши пользователи этого не сделали)

По сути, во время выхода из системы он меняет состояние профиля на «128», которое является гостевой учетной записью, и производит ядерное оружие, которое они профилируют при выходе из системы.

Просто скопируйте и вставьте это как сценарий PowerShell

$ SID = ([Security.Principal.WindowsIdentity] :: GetCurrent ()). User.Value Set-ItemProperty -path "HKLM: \ Software \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ $ SID \" -name State -value 128

Это удобно, когда у вас есть такие приложения, как SKYPE, которые не позволяют использовать управляющие профили или гостевые учетные записи, у которых нет разрешений на запись в хранилище сертификатов.

Создайте новый объект GPO и свяжите его с OU пользователей (или компьютеров).

Computer Configuration => Policies => Administrative Templates => System/User Profiles => Delete cached copies of roaming profiles == Enabled

У меня это работало раньше.