Как отключить отмонтировать диск user profile disks в rds windows server

Обновлено: 06.07.2024

Постановка задачи

Задача ставиться таким образом, у вас есть ферма Remote Desktop Services High Availability на базе Windows Server 2019, которую используют 500 пользователей. У сотрудников перемещаемые профили (могут быть и локальные все зависит от задачи), это подразумевает, что сегодня они подключаются к одному серверу, а завтра к другому, тем самым оставляя дополнительный неиспользуемый объем на RDSH хостах. Именно эти уже не используемые профили я и хочу удалять по заданным критериям, например удалять все профили старше 3-5 дней.

Методы для автоматического удаления профилей пользователей

Я могу выделить три метода позволяющие нам удалить профиль пользователя по заданным критериям:

  • С помощью групповой политики
  • С помощью утилиты Delprof2: User Profile Deletion Tool
  • Через PowerShell

Удаление устаревших профилей через GPO

Первый метод, довольно таки топорный, хоть и централизованный. Суть метода заключается в том, что вы настраиваете определенную настройку в групповых политиках, которая при перезагрузке сервера будет смотреть как долго не обращались к профилю, и если эта дата больше заданной в настройках GPO, то профиль будет удаляться с сервера. Эта политика полезная, если у вас особо не большая RDS ферма и у вас хотя бы раз в месяц происходит обслуживание серверов, например для установки обновлений или обновления Vmware Tools. Если вы хотите настроить политику, то нужный вам раздел находится по пути:

Конфигурация компьютера - Политики - Административные шаблоны - Система - Профили пользователей - Удалять при перезагрузке системы профили пользователей по истечении указанного числа дней (Computer Configuration - Administrative Templates - System - User Profiles - Delete user profiles older than a specified number of days on system restart)

Далее производим обновление групповых политик и проверяем на тестовом сервере, либо можете перевести любой из RDSH хостов в режим стока и проверить на нем.

Удаление устаревших профилей через GPO

Удаление устаревших профилей через Delprof2: User Profile Deletion Tool

Второй метод, который подошел мне, это использование бесплатной утилиты Delprof2: User Profile Deletion Tool. Delprof2 удаляет неактивные профили пользователей. Если вы хотите освободить место на диске, просто запустите его без параметров, и он удалит все профили, кроме вашего собственного, и некоторые специальные профили, необходимые для операционной системы. Delprof2 имеет дополнительные параметры фильтрации: вы можете удалить только локально кэшированные копии перемещаемых профилей или удалить только те профили, которые не использовались в течение указанного количества дней. Delprof2 делает все как в локальной системе, так и удаленно.

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

Некоторые программы хранят файлы по пути, длина которого превышает 260 символов. Большинство инструментов не могут работать с такими путями, длина которых превышает значение MAX_PATH (260). Проводник Windows - яркий тому пример. Delprof2, с другой стороны, использует специальные API, чтобы иметь возможность удалять файлы в самых удаленных областях вашего жесткого диска.

Загрузить последнюю версию утилиты вы можете либо у меня с mail облака или же с официального сайта:

Далее вам необходимо разархивировать zip архив. На выходе у вас появится папка с двумя файлами:

  • Changelog - файл с описанием, что изменилось
  • DelProf2 - сам файл утилиты

Состав утилиты Delprof2: User Profile Deletion Tool

напоминаю, что если вы запустите DelProf2.exe, то без ввода параметров она удалит все профили, кроме вашего, так что пока не запускайте, а изучите доступные ключи

Откройте командную строку и перейдите в ней в папку с утилитой DelProf2.exe, далее выполните команду:

В результате этих не хитрых действий у вас появится справка по утилите, со всеми доступными ключами.

Вызов справки Delprof2: User Profile Deletion Tool

  • /l - Перечисление профилей доступных для удаления, но удалено ничего не будет, это такой режим, что было бы (what-if mode)

Перечисление профилей доступных для удаления в Delprof2: User Profile Deletion Tool

  • /u - Данный ключ не будет требовать подтверждения при удалении и без просмотра
  • /q - Тихое удаление без вывода и подтверждения
  • /p - Запрашивать подтверждение перед удалением каждого профиля
  • /r - Удалить локальные кэши только перемещаемых профилей, но не локальных профилей
  • /c - Удалить на удаленном компьютере
  • /d - Удалить только профили, которые не использовались в течение x дней
  • /ntuserini - При определении возраста профиля для /d используйте файл NTUSER.INI вместо NTUSER.DAT для расчета возраста
  • /ed - Исключить каталоги профилей, имя которых соответствует определенному шаблону с помощью подстановочных знаков * и ?. Может использоваться более одного раза и может сочетаться с /id
  • /id - Включить только каталоги профилей, имя которых соответствует некому шаблону, можно использовать подстановочные знаки * и ?. Может использоваться более одного раза и может сочетаться с /ed
  • /i - Игнорировать ошибки, продолжить удаление

Примеры использования Delprof2: User Profile Deletion Tool

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

  • Для начала я хочу посмотреть список профилей на удаленном сервере, сделать это можно через команду:

тут мы вывели список профилей на сервере svt2019s01, к сожалению с русскими логинами утилита может показывать кракозябры. Тут так же видно, какие из профилей используются в данный момент, они имеют статус (reason: in use).

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

  • Посмотреть профили на удаленном сервере старше определенного количества дней, в моем примере это 5 дней.

Как видим из списка был убран профиль sem.

Посмотреть профили на удаленном сервере старше определенного количества дней

  • Произведем удаление профилей старше 5 дней на удаленном сервере, добавим в команду ключ /u, не требующий подтверждения и убираем ключ /l.

Удаление профилей через DelProf2

Выведем список профилей и удостоверимся, что все было удалено.

Проверка удаления профилей на удаленном сервере

  • Если нужно удалить на сервере только перемещаемые профили, а локальные не трогать, то мы должны добавить ключ /r

Так как в моем примере нет перемещаемых профилей, то команда вернула пустой результат, но уведомила, что все профили локальные.

удалени перемещаемых парофилей

    • Чтобы логировать все действия по удалению, то вы можете добавить вот такую конструкцию в DelProf2.
    Delprof2 /c:svt2019s01 /d:5 /u > svt2019s01log_%DATE%.txt

    Если нужно сделать список серверов, то можно в файле написать так:

    Delprof2 /c:svt2019s01 /d:5 /u > svt2019s01log_%DATE%.txt

    Delprof2 /c:svt2019s02/d:5 /u > svt2019s01log_%DATE%.txt

    Delprof2 /c:svt2019s03 /d:5 /u > svt2019s01log_%DATE%.txt

    Настройка лога удаления в DelProf2

    Как видите сами команды очень простые. Чтобы автоматизировать такой аудит профилей с последующим удалением, я вам рекомендую создать простой bat файл с нужной командой

    Создание bat файла с запуском Delprof2

    и запускать его из планировщика Windows по расписанию. Лично я произвожу запуск каждый день в 23-00, выглядит это вот так.

    задание по удалению профиля в планировщике Windows

    Удаление профилей через PowerShell

    Существует уже ряд готовых скриптов PowerShell, которые могут вам помочь в удалении старых профилей пользователей. Первый скрипт от Microsoft, я так же брал его за основу своего.

    Для запуска скрипта откройте оболочку PowerShell. Далее загрузите скрипт по ссылке выше или ниже скачайте мой архив с двумя скриптами, распакуйте zip-архив. Давайте для начала выведем справку, выполните команду:

    Если у вас выскакивает ошибка "так как выполнение скриптов запрещено для данной системы (Execution of scripts was prohibited)", то перейдите по ссылке (Set-ExecutionPolic) и разрешите данное действие.

    Как видите тут есть ключи:

    • -ListUnusedDay - показывает за какой срок нужно показывать неиспользуемые профили
    • -ListAll - показать все профили
    • -DelereUnuseDay - Удалить профили неиспользуемые определенное количество дней

    Запуск Get-Help ./RemoveLocalUserProfile.ps1

    Давайте для начала посмотрим профили которые старше 5 дней, для этого выполните:

    Теперь посмотрим вообще все профили хранящиеся на данном сервере, через ключ -ListAll

    Теперь удалим профили старше 5 дней, через ключ -DeleteUnusedDay, у вас выскочит подтверждение.

    Удаление старых профилей через скрипт PowerShell

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

    У данного скрипта такие же ключи:

    • -ListUnusedDay - показывает за какой срок нужно показывать неиспользуемые профили;
    • -ListAll - показать все профили;
    • -DelereUnuseDay - Удалить профили неиспользуемые определенное количество дней;

    Откройте его с помощью PowerShell ISE. Тут есть два важных момента:

    1. Теперь при удалении у вас не будет спрашиваться подтверждение
    2. У вас есть возможность подсовывать список хостов, в виде перечисления или же через файл

    Давайте подготовим файл с хостами, главное чтобы они резолвились через ваш DNS сервер.

    Файл со списком серверов на которых будут удаляться профили пользователей

    Далее вам нужно раскомментировать строку с Get-Content и указать путь до вашего текстового файла со списком серверов.

    Загрузка списка серверов для очистки от старых профилей

    Запустим скрипт через команду:

    Ключ -ListAll выводит все профили пользователей попадающие под критерии удаления. Количество дней устаревания вы можете задать через параметр "$Computername -ListUnusedDay 10". Если на хосте из списка не будет профилей попадающих под ваши критерии, то вы получите желтое уведомление " Предупреждение: The item not found ". Как видите я поигрался с количеством дней, поэтому и разные списки профилей.

    Выгрузка списка пользователей с серверов, где необходимо удалять профили

    так же добавим ключ для удаления:

    В результате удалим профили всех, у кого они старше 5 дней.

    Вызов Pelprof через PowerShell

    При запуске приведенного ниже сценария все, что вам нужно сделать, это ввести имя хоста рабочих станций и имя папки профиля, то есть имя пользователя учетной записи.


    Param
    (
    [parameter(mandatory=$true,HelpMessage="Please type the Hostname of the workstation(s) Use wildcards for a collection")][ValidateNotNullOrEmpty()][String]$Hostname,
    [parameter(mandatory=$true,HelpMessage="Please enter the user account (profile folder name)")][ValidateNotNullOrEmpty()][String]$UserProfile
    )
    If ($UserProfile -ne $null) $Computers = Get-ADComputer -Filter
    ForEach ($computer in $computers) $ComputerN = $computer.Name
    $runpath = "C:\Temp\DelProf2\DelProf2.exe"
    $arguments = "/u /c:\\$ComputerN /id:$UserProfile"
    Start-Process -filepath $runpath -Verb runAs -ArgumentList $arguments
    >>

    Не забываем поместить утилиту pelprof2 в нужное вам место, и поменять это в скрипте.

    При использовании дисков профилей User Profile Disk в ферме RD Connection Broker на базе Windows Server 2012 R2 рано или поздно может появиться задача расширения того или иного диска профилей. Выполнить эту задачу можно как с помощью графических средству управления, таких как, консоль Управление дисками (diskmgmt.msc) и Диспетчер Hyper-V (virtmgmt.msc), так и с помощью PowerShell для того, чтобы свести к минимуму пробег мыши. Для непосредственной процедуры расширения VHDX-диска воспользуемся командлетом Resize-VHD из PS-модуля Hyper-V. Для того, чтобы этот командлет отрабатывал без ошибок на рабочей станции с Windows 10, помимо Средств управления Hyper-V мне пришлось доустановить в систему Службы Hyper-V через оснастку Программы и компоненты (appwiz.cpl)

    image

    Чтобы сориентироваться в том, какой именно VHDX-файл нам нужно модифицировать в сетевой папке где расположены файлы дисков профилей, узнаем SID доменного пользователя запросившего расширение диска профиля:

    Зная SID, сформируем полный путь к VHDX-файлу (имя файла формируется как UVHD-<SID>.vhdx) и запишем его в переменную $VDiskPath

    В переменную $VDiskNewSize запишем новый размер (увеличенный) виртуального диска в байтах. Перед запуском скрипта на всякий случай сделаем резервную копию модифицируемого VHDX-файла. В процессе расширения диска нам потребуется эксклюзивный доступ к VHDX-файлу, поэтому на время расширения лучше попросить пользователя закрыть сессию в ферме RDS, чтобы диск его профиля не был занят. Выполним скрипт расширения:

    В процессе работы скрипта происходит следующее:
    А) Выполняется попытка смонтировать диск профиля (соответствующий VHDX-файл), чтобы убедиться в том, что файл не занят другими процессами, например открытой сессией пользователя.
    Б) Если попытка монтирования диска прошла без ошибок, диск отсоединяется и выполняется операция увеличения его размера.
    В) Диск снова монтируется, выполнятся расширение тома до его максимально возможного размера с последующим отсоединением диска.

    На свою голову настроил UPD. Запустил туда несколько юзеров. Оно конечно красиво и выглядит идеологически правильно, но вызывает некоторые неудобства (например монопольный доступ к диску).

    Подскажите как было бы правильно мигрировать с UPD на Folder Redirection, чтобы данные с диска перенеслись уже на общую папку и ничего по пути не потерялось.

    • Вопрос задан более трёх лет назад
    • 1093 просмотра

    Средний 2 комментария

    Dee3

    SyavaSyava, это значит я не могут открыть диск пользователя, пока он не прекратит работу с ним. Так уже сложилось что есть пара программ которые хранят свои данные в Roaming и туда периодически приходится лазить.

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

    Т.е. каких то явных преимуществ для себя я не вижу, но неудобства уже создает.

    Sleuthhound

    Перемещаемые профили актуальны если пользователи активно перемещаются между ПК в офисе, если же они сидят постоянно на одном своем ПК, то особого смысла в перемещаемых профилях нет.
    Более того, с перемещаемыми профилями Вы поимеете кучу проблем, говорю как человек активно с ними работающий (+Folders Redirection) в корпоративной среде и на текущий момент я перевожу юзеров с перемещаемых профилей на локальные.
    Основная проблема перемещаемых профилей, даже с Folders Redirection - это каталог AppData\ с подпапками, так вот, при включении перемещаемых профилей с Folders Redirection (редирект AppData, про рабочий стол и Мои документы речь не идет, они редиректятся нормально и честно), только AppData\Roaming редиректится на сервер, а остальные папки из AppData\ остаются локальными или перемещаемыми при выходе и входе в систему с/на сервер. И тут кроется засада, в примеру Google Chrome пишет свой профиль в AppData\Local\ и эта часть на сервер не перемещается и не редиректится, соответственно часть данных приложений все равно остается локальной и если HDD на ПК умирает, вы все равно теряете часть пользовательского профиля, конечно проблема с Google Chrome решается политиками, есть Google Chrome Enterprise в котором можно рулить через GPO его настройками, в том числе местом хранения настроек, но помимо Google Chrome в AppData\Local\ срут еще куча программ которым не объяснить, что нужно срать в AppData\Roaming.
    Проблема номер 2 - это та же AppData, в ней остается содержимое которое не редиректиться на сервер и постоянно копируется при выходе на сервер и при входе с сервера и в эту папку любят срать большими объемами некоторые программы, например у нас программеры установили себе GoLang, оказывается это чудо от Google хранит свои пакеты как раз в той самой папке и у некоторых прогеров там по 3-4 гига лежит, которые туда сюда гоняют при входе и выходе - удовольствие мало приятное ждать загрузки профиля по 5 минут.

    Так что подумайте хорошенько, а стоит ли делать Roaming Profiles + Folders Redirection.

    Как сделать, чтобы пользователи на сервере могли редактировать файлы друг друга?
    Здравствуйте. В нашей организации имеется сеть из windows машин и файлового сервера на ubuntu.

    Как сделать так чтобы новые пользователи проходили регистрацию, а потом активацию через мыло?
    Поставил форум версии 4.1.2, Так вод подскажите Как сделать так чтобы новые пользователи проходили.

    Как сделать так чтобы файл на жестком диске и на дискете 1.44 мб весил одинаково
    Как сделать так чтобы файл на жестком диске и на дискете 1.44 мб весил одинаково.(мы работаем через.

    ак же сделать так чтоб терминальные пользователи и их файлы в том числе и рабочий стол, хранились на соседнем диске Прочитайте про технологию User Profile Disks (UPD, диски профилей пользователей) Некоторые хитрости при переустановке ОС пост №5.
    Правда в описываемом мною методе перенос профилей делается на стадии установки ОС. Некоторые хитрости при переустановке ОС пост №5.
    Правда в описываемом мною методе перенос профилей делается на стадии установки ОС. При установке Windows Server 2012 проделывать все эти манипуляции? Или надо всем переустановить винду?

    Вы же спрашивали:

    Как же сделать так чтоб терминальные пользователи и их файлы в том числе и рабочий стол, хранились на соседнем диске (2TB)

    Поэтому все данные вам советы касаются перенастройки только сервера. профиль на клиентских ПК, где был там и останется.

    А чем вас не устроило включение режим "User Profile Disks" на RDS-сервере? Переустанавливать ОС для этого не надо.

    А чем вас не устроило включение режим "User Profile Disks" на RDS-сервере? Переустанавливать ОС для этого не надо.

    У меня теперь не создаются папки пользователей на сервере при создании пользователя, папка создается на локальном компьютере, это нормально?

    Меня устроило, просто пока не разобрался.

    У меня теперь не создаются папки пользователей на сервере при создании пользователя, папка создается на локальном компьютере, это нормально?

    Не понял о чём вы - где именно вы создаёте пользователя и какие при этом должны создаваться папки? Вы о "Домашней папке" или "Перемещаемом профиле" для AD-пользователя?

    Как сказано в статье "Настройка UPD намного проще чем процесс настройки перемещаемых профилей и перенаправляемых папок" - и это пожалуй верно, т.к. ничего проще для размещения всех новых профилей на другом диске у терминального сервера, по моему ни сделать. Не понял о чём вы - где именно вы создаёте пользователя и какие при этом должны создаваться папки? Вы о "Домашней папке" или "Перемещаемом профиле" для AD-пользователя? Нет, например создаю в AD пользователя Иван Иванов имя для входа "Ivan" и на диске C в папке "Пользователи" не создается папка Ivan она создается на компьютере с которого заходишь под этой учёткой.
    Простите что не по теме. и на диске C в папке "Пользователи" не создается папка Ivan она создается на компьютере с которого заходишь под этой учёткой.

    Ещё раз - вы заходите на терминальный сервер AD-пользователем mydomain\ivan, а на сервере его профиль не создаётся. И при этом профиль создаётся на клиенте, откуда запускалось "Подключение к удалённому рабочему столу"?

    А в какой тогда профиль он попадает? Выполните (на терминальном сервере) в cmd [cd %USERPROFILE%] или просто создайте файл на рабочем столе и посмотрите его свойства - какой будет указан путь?

    Добавлено через 2 минуты

    она создается на компьютере с которого заходишь под этой учёткой Может вы %windir%\system32\mstsc.exe (Подключение к удаленному рабочему столу) запускаете от имени mydomain\ivan? Тогда да - на доменном ПК создастся профиль этого Ивана. Ещё раз - вы заходите на терминальный сервер AD-пользователем mydomain\ivan, а на сервере его профиль не создаётся. И при этом профиль создаётся на клиенте, откуда запускалось "Подключение к удалённому рабочему столу"?

    Все, всё получилось. Создалась папка, туплю, простите)
    Убежал делать UPD, отпишу обязательно, сегодня вряд ли успею конечно

    Добавлено через 34 минуты
    KDE777, подскажите пожалуйста, начал делать, но даже не получается установить службу удаленных рабочих столов
    "Добавить роли и компоненты - установка служб удаленных рабочих столов - быстрый запуск - развертывание рабочих столов на основе сеансов - выбор сервера - развернуть"
    Сразу выдает "Не удалось установить службы ролей"

    Добавлено через 9 минут
    KDE777, а вообще проще сначала спросить, то что Вы порекомендовали можно сделать если не куплены еще клиентские лицензии и windows server ознакомительный на 180 дней?

    Читайте также: