Администраторы время от времени должны удалять старые профили пользователей (уволенные пользователи, неактивные пользователи, и т.д.) в каталоге C:\Users на рабочих станциях и серверах Windows. Чаще всего с задачей очисткой профилей пользователей Windows сталкиваются на терминальных серверах RDS (Remote Desktop Services).
Основная проблема терминальных серверов – постоянный рост размеров каталогов профилей пользователей на диске. Частично эта проблема решается политиками квотирования размера профиля пользователя с помощью FSRM или NTFS квот, использованием профилей типа FSLogix или User Profile Disk, перемещаемыми папками и т.д. Но при большом количестве RDS пользователей в папке C:\Users со временем накапливается огромное количество каталогов с неиспользуемыми профилями пользователей.
Содержание:
- Как вручную удалить профиль пользователя в Windows?
- Групповая политика для автоматической очистки старых профилей
- PowerShell скрипт для удаления старых профилей пользователей в Windows
Как вручную удалить профиль пользователя в Windows?
В Windows вы можете вручную удалить профиль пользователя через панель управления.
- Откройте Advanced System Settings (команда
SystemPropertiesAdvanced
) -> User Profiles -> Settings; - В этом окне перечислен список всех профилей пользователей (локальных и доменных), которые хранятся на этом компьютере. Размер каждого профиля пользователя на диске указан в столбце Size.
- Выберите пользователя, чей профиль нужно удалить и нажмите кнопку Delete.
В Windows 11/10 и Windows Server 2022/2019 вы можете удалить профили пользователей с диска через приложение Settings. Перейдите в раздел Accounts -> Access work and school (или выполните команду быстрого доступа
ms-settings:otherusers
). Выберите пользователя и нажмите Remove чтобы удалить его данные с компьютера.
При корректном удалении профиля пользователя с диска будет удален каталог профиля в C:\Users и запись о пользователе в реестре.
Многие начинающиеся администраторы пытаются вручную удалить каталог с профилем пользователя из папки C:\Users. В этом случае нужно обязательно вручную удалить информацию о профиле из реестра Windows:
- Откройте редактор реестра
regedit.exe
; - Перейдите в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
- Для каждого пользователя, выполнившего локальный вход в систему (этот метод входа должен быть разрешен пользователю настройками параметра Allow log on locally в GPO), создается отдельная ветка с SID пользователя в качестве имени;
- Вы можете найти раздел реестра, соответствующий пользователю по SID, или можете вручную просмотреть содержимое всех вложенных разделв, пока не найдете раздел, в котором значение ProfileImagePath указывает на каталог с профилем пользователя на диске (например,
C:\Users\kbuldogov
); - Удалите данный раздел реестра, чтобы завершить корректное удаление профиля.
Также вы можете удалить профиль конкретного пользователя с помощью PowerShell:
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq 'kbuldogov' } | Remove-CimInstance
Эта команда удалит как каталог на диске, так и ссылку на профиль пользователя kbuldogov в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
Эта команда будет работать как в Windows PowerShell, так и в новых версиях PowerShell Core 6.x,7.x
Можно удалить профиль пользователя на удаленном компьютере с помощью PowerShell Remoting и командлета Invoke-Command:
$compname="wks21s32"
$user = "kbuldogov"
Invoke-Command -ComputerName $compname -ScriptBlock {
param($user)
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq $user } | Remove-CimInstance
} -ArgumentList $user
Групповая политика для автоматической очистки старых профилей
В Windows есть специальный параметр групповой политики для автоматического удаления старых профилей пользователей старше xx дней. Вы можете включить этот параметр с помощью локального редактора GPO (
gpedit.msc
) или с помощью консоли управления доменными GPO (
gpmc.msc
). В этом примере на назначим политику автоматической очистки профилей на хосты в ферме RDS, которые вынесены в отдельный контейнер (Organizational Unit) Active Directory.
Прежде чем применять политику удаления старых профилей ко всем хостам, настоятельно рекомендуем проверить ее на тестовом сервере. Выведите один из серверов RDSH в режим обслуживания и протестируйте политику на нем.
- Найдите OU с компьютерами/серверами, на который вы хотите применить политику очистки старых профилей пользователей. Щелкните по OU и выберите Create a GPO in this domain and Link it here;
- Укажите имя политики и отредактируйте GPO;
- Перейдите в раздел Конфигурация компьютера -> Административные шаблоны -> Система -> Профили пользователей (Computer Configuration -> Administrative Templates -> System -> User Profiles);
- Откройте параметр “Удалять при перезагрузке системы профили пользователей по истечении указанного числа дней” (Delete user profiles older than a specified number days on system restart);
- Включите политику и укажите через сколько дней профиль пользователя считается неактивным и “Служба профилей пользователей Windows” можно автоматически удалить такой профиль при следующей перезагрузке. Обычно тут стоит указать не менее 45-90 дней;
- После применения новых настроек групповых политк, служба User Profile Services на ваших серверах Windows будет автоматически удалять старые профили пользователей. Удаление выполняется при перезагрузке сервера.
При использовании этой политики нужно быть уверенным, что при выключении/перезагрузке сервера нет проблем с системным временем (время не сбивается), иначе могут быть удалены профили активных пользователей.
Другой недостаток — вы не можете запретить удаление определенных профилей, например, локальных учетных записей, администраторов и т.д.
В версиях до Windows 11/10 и Windows Server 2022/2019 эта политика работала некорректно. Дело в том, что неактивноть профиля пользователя ранее определялась по дате именения файла NTUSER.dat. При установке обновлений Windows, служба Trusted Installer может менять дату изменения файла NTUSER.dat в профиле каждого пользователя. В результате служба Win32_UserProfile считает, что профиль использовался недавно.
В современных версиях Windows эта политика проверяет активность профиля пользователей по параметрам LocalProfileUnloadTimeLow и LocalProfileUnloadTimeHigh в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<User Sid>
.
Вы можете получить значения параметров реестра LocalProfileLoadTimeLow и LocalProfileUnloadTimeHigh в привычном формате времени с помощью скрипта:
$profilelist = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" foreach ($p in $profilelist) { try { $objUser = (New-Object System.Security.Principal.SecurityIdentifier($p.PSChildName)).Translate([System.Security.Principal.NTAccount]).value } catch { $objUser = "[UNKNOWN]" } Remove-Variable -Force LTH,LTL,UTH,UTL -ErrorAction SilentlyContinue $LTH = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileLoadTimeHigh -ErrorAction SilentlyContinue).LocalProfileLoadTimeHigh $LTL = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileLoadTimeLow -ErrorAction SilentlyContinue).LocalProfileLoadTimeLow $UTH = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileUnloadTimeHigh -ErrorAction SilentlyContinue).LocalProfileUnloadTimeHigh $UTL = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileUnloadTimeLow -ErrorAction SilentlyContinue).LocalProfileUnloadTimeLow $LoadTime = if ($LTH -and $LTL) { [datetime]::FromFileTime("0x$LTH$LTL") } else { $null } $UnloadTime = if ($UTH -and $UTL) { [datetime]::FromFileTime("0x$UTH$UTL") } else { $null } [pscustomobject][ordered]@{ User = $objUser SID = $p.PSChildName Loadtime = $LoadTime UnloadTime = $UnloadTime } }
PowerShell скрипт для удаления старых профилей пользователей в Windows
Вы можете удалять профили неактивных или заблокированных пользователей с помощью скрипта PowerShell.
Сначала попробуем подсчитать размер профиля каждого пользователя в папке C:\Users c помощью простого скрипта из статьи “Вывести размер папок с помощью PowerShell”:
gci -force ‘C:\Users\’-ErrorAction SilentlyContinue | Where { !($_.Attributes -match " ReparsePoint") }| ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, ‘{0:N2} GB’ -f ($len / 1Gb)
$sum = $sum + $len
}
“Общий размер профилей”,'{0:N2} GB’ -f ($sum / 1Gb)
Итого суммарный размер всех профилей пользователей в каталоге C:\Users около 22 Гб.
Теперь выведем список пользователей, профиль которых не использовался более 60 дней. Для поиска можно использовать значение атрибута профиля LastUseTime.
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}| Measure-Object
У меня на терминальном сервере оказалось 143 профиля неактивных пользователей (общим размером около 10 Гб).
Следующий PowerShell скрипт выведет список подробную информацию о профилях пользователей, которые не обновлялись более 60 дней. Скрипт сконвертирует SID пользователя в имя, посчитает размер профиля каждого пользователя и выведет все в таблице:
$allprofilesinfo = @() $OldProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))} Foreach ($OldProfile in $OldProfiles) {$objSID = New-Object System.Security.Principal.SecurityIdentifier ($OldProfile.SID) $objUser = $objSID.Translate( [System.Security.Principal.NTAccount]) $userinfo = New-Object PSObject -Property @{ userName = $objUser.Value ProfilePath = $OldProfile.localpath LastUsedDate = $OldProfile.ConvertToDateTime($OldProfile.LastUseTime) FolderSize = "{0:N2} GB" -f ((gci –force $OldProfile.localpath –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) } $allprofilesinfo += $userinfo } $allprofilesinfo
Чтобы удалить все эти профили достаточно добавить перенаправить список на команду Remove-WmiObject (перед использование скрипта удаления желательно несколько раз перепроверить его вывод с помощью параметра –WhatIf ):
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-30))} | Remove-WmiObject –WhatIf
Как мы уже упомянули выше, при установке некоторых обновлений Windows, служба Trusted installer может менять дату изменения файла NTUSER.dat в профиле каждого пользователя.
На скриншоте выше видно, что все профили были изменены примерно в одно и тоже время. Проверьте дату последней установки обновлений в Windows:
gwmi win32_quickfixengineering |sort installedon |select InstalledOn -Last 1
Или с помощью модуля PSWindowsUpdate:
Get-WUHistory | Select-Object -First 20
Скорее всего она совпадет с датой изменения профилей. Поэтому в старых версиях Windows можно получить список неактивных профилей с помощью другого скрипта, который проверяет атрибуту lastwritetime каталога пользователя:
$USERS= (Get-ChildItem -directory -force 'C:\Users' | Where { ((Get-Date) — $_.lastwritetime).days -ge 60 } | % {'c:\users\' + $_.Name})
foreach ($User in $USERS) {
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.LocalPath -eq $User)} | Remove-WmiObject WhatIf }
Чтобы не удалять профили некоторых пользователей, например, специальные аккаунты System и Network Service, учетную запись локального администратора, пользователей с активными сессиями, список аккаунтов-исключений), нужно модифицировать скрипт следующим образом:
#Список аккаунтов, чьи профили нельзя удалять
$ExcludedUsers ="Public","zenoss","svc",”user_1”,”user_2”
$LocalProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}
foreach ($LocalProfile in $LocalProfiles)
{
if (!($ExcludedUsers -like $LocalProfile.LocalPath.Replace("C:\Users\","")))
{
$LocalProfile | Remove-WmiObject
Write-host $LocalProfile.LocalPath, "профиль удален” -ForegroundColor Magenta
}
}
Вы можете настроить запуск этого скрипта через shutdown скрипт групповой политики или по расписанию заданием планировщика. (перед настройкой автоматического удаления профилей внимательно протестируйте скрипт в своей среде!).
Можно модифицировать скрипт, чтобы автоматически удалять пользователи всех пользователей, которые добавлены в определенную группу AD. Например, вы хотите автоматически удалять профили уволившихся пользователей. Просто добавьте такие учетные записи в группу DisabledUsers и выполните на сервере скрипт:
$users = Get-ADGroupMember -Identity DisabledUsers | Foreach {$_.Sid.Value}
$profiles = Get-WmiObject Win32_UserProfile
$profiles | Where {$users -eq $_.Sid} | Foreach {$_.Delete()}
В этой пошаговой инструкции подробно о том, как удалить пользователя в Windows 10 в различных ситуациях — об удалении простой учетной записи, или того, пользователя, которые не отображается в списке пользователей в параметрах; о том, как выполнить удаление, если вы видите сообщение о том, что «Пользователь не может быть удален», а также о том, что делать, если при входе в систему отображается два одинаковых пользователя Windows 10, и нужно убрать одного лишнего. См. также: Как удалить учетную запись Майкрософт в Windows 10.
В общем случае, учетная запись из которой производится удаление пользователя, должна иметь права администратора на компьютере (особенно если удаляется существующий аккаунт администратора). Если в настоящий момент она имеет права простого пользователя, то для начала зайдите под имеющимся пользователем с правами администратора и дайте нужному пользователю (тому, под которым в дальнейшем планируете работать) права администратора, о том, как это сделать разными способами написано в руководстве «Как создать пользователя Windows 10».
Простое удаление пользователя в параметрах Windows 10
Если вам требуется удалить «простого» пользователя, т.е. созданного лично вами или заранее присутствовавшего в системе при покупке компьютера или ноутбука с Windows 10 и более не нужного, сделать это можно, используя параметры системы.
- Зайдите в Параметры (клавиши Win+I, или Пуск — значок шестеренки) — Учетные записи — Семья и другие люди.
- В разделе «Другие люди» кликните по пользователю, которого нужно удалить и нажмите соответствующую кнопку — «Удалить». Если нужный пользователь отсутствует в списке, о том, почему это может быть — далее в инструкции.
- Вы увидите предупреждение о том, что вместе с учетной записью будут удалены файлы этого пользователя, хранящиеся в его папках рабочего стола, документов и прочего. Если важных данных у этого пользователя нет, нажмите «Удалить учетную запись и данные».
Если все прошло успешно, то ненужный вам пользователь будет удален с компьютера.
Удаление в управлении учетными записями пользователей
Второй способ — использовать окно управления учетными записями пользователей, открыть которое можно так: нажмите клавиши Win+R на клавиатуре и введите в него control userpasswords2 после чего нажмите Enter.
В открывшемся окне выберите пользователя, которого нужно удалить, а затем нажмите кнопку «Удалить».
Если при этом вы получите сообщение об ошибке и о том, что пользователь не может быть удален, это обычно говорит о попытке удаления встроенной системной учетной записи, о которых — в соответствующем разделе этой статьи.
Как удалить пользователя с помощью командной строки
Следующий вариант: использовать командную строку, которую следует запустить от имени администратора (в Windows 10 это можно сделать через меню правого клика по кнопке «Пуск»), а затем использовать команды (нажимая Enter после каждой):
- net users (выдаст список имен пользователей, активных и нет. Вводим для проверки того, что правильно помним имя пользователя, которого нужно удалить). Внимание: не удаляйте таким образом встроенные учетные записи Администратор, Гость, DefaultAccount и defaultuser.
- net user Имя_пользователя /delete (команда удалит пользователя с указанным именем. Если имя содержит проблемы, используйте кавычки, как на скриншоте).
Если команда была выполнена успешно, пользователь будет удален из системы.
Как удалить встроенные учетные записи Администратор, Гость или другие
Если вам требуется убрать лишних пользователей Администратор, Гость, а возможно и какие-то другие, сделать этого так, как описывалось выше, не получится. Дело в том, что это встроенные системные учетные записи (см., например: Встроенная учетная запись Администратор в Windows 10) и их нельзя удалить, но можно отключить.
Для того, чтобы сделать это, выполните два простых шага:
- Запустите командную строку от имени администратора (клавиши Win+X, затем выбрать нужный пункт меню) и введите следующую команду
- net user Имя_пользователя /active:no
После выполнения команды, указанный пользователь будет отключен и исчезнет в окне входа в Windows 10 и из списка учетных записей.
Два одинаковых пользователя Windows 10
Один из распространенных багов в Windows 10, который заставляет искать способы удаления пользователей — отображение при входе в систему двух учетных записей с одинаковыми именами.
Обычно это происходит после каких-либо манипуляций с профилями, например, после такого: Как переименовать папку пользователя, при условии, что до этого вы отключили пароль при входе в Windows 10.
Чаще всего срабатывающее решение, позволяющее убрать дубликат пользователя, выглядит так:
- Нажать клавиши Win+R и ввести control userpasswords2
- Выбрать пользователя и включить запрос пароля для него, применить настройки.
- Перезагрузить компьютер.
После этого можно снова убрать запрос пароля, но второй пользователь с таким же именем снова появиться не должен.
Постарался учесть все возможные варианты и контексты необходимости удаления учетных записей Windows 10, но если вдруг решения для вашей проблемы здесь не нашлось — опишите ее в комментариях, возможно, мне удастся помочь.
,
Do you want to delete a user profile on your Windows 11 system? If so, this guide will help you with that.
If multiple users use the same Windows system, each user has a separate user profile that contains all its files and settings. These data are stored in a separate folder under «C:\Users» and is known as «User Profile folder».
A User profile can be deleted when it is no longer needed to free up free space. If you delete a User profile, all the data associated with that profile will also be deleted. This includes files, settings, and applications. So, before removing a user profile, ensure that you don’t need the data includes or backup them to another location on disk.
In this article, we’ll show you several ways to delete a user and the associated user profile folder in Windows 11.
How to Delete User Account & Account Data in Windows 10/11?
Deleting a user profile in Windows 10/11 is not a difficult task. You can use any of the methods listed below to remove any unnecessary users and user profiles from your system.*
* Note: If you have already removed a user and you want to remove also the User Profile folder, skip to step-2 on method 3 below.
- Delete User & User Profile from Settings.
- Remove User & User Profile from Control Panel.
- Delete User from Command Prompt.
- Remove User in User Accounts.
- Delete Users in Computer Management.
Method 1: Remove Windows 11 User Account & Data using Settings.
The first and the most straightforward method to delete a user and its user profile on Windows 10/11 is by using the Settings app. The process is simple and can be done by anyone.
1. On your Windows 11 system, click the Start button and select Settings from the menu.
2. Switch to the Accounts tab on the left and select the Other users option from the right.
3. Under the Other users section, expand the profile you want to delete and click on the Remove button.
4. Next, you will get a warning pop-up. Click the Delete account and data button to confirm the user profile folder deletion. *
* Important: Before you delete a user’s profile folder, make sure you don’t need their data, or backup their data to another storage location.
Method 2: Delete User Profile via Control Panel.
The next straightforward method to delete an account from Windows and to remove also the Account’s data (User Profile folder), is by using Control Panel. (This method works on all Windows versions).
1. In search box, type control panel and open it.
2. In Control Panel click on the User Accounts.
3. On the next window, click on the Remove user accounts option under User Accounts.
4. Now click on the user that you want to delete and at the next window select Delete the account.
5. Next, you will be asked to keep or delete the files on the user profile folder of the user you are removing. Click on the option that you prefer. *
* Note: If you don’t need the user’s files just click Delete files to completely remove the User’s profile folder.*
* Important: Before you delete a user’s profile folder, make sure you don’t need their data, or backup their data to another storage location.
6. Finally, click on the Delete Account button to remove the unnecessary user profile.
Method 3: Delete User Profile from Command Prompt.
If you are comfortable with commands, you can delete a user account on Windows 10/11 command prompt and then to delete its user profile in System Properties. To do that:
Step 1. Delete Account from Command Prompt.
1. On the search box, type Command Prompt and then choose Run as administrator.
2. Now type in the following command to list all the available users on the system:
- net user.
3. To delete a user from command prompt, give this command:
- net user Username /delete.
* Note: Replace Username with the user that you want to remove from the system. e.g. to remove the user «User2» in this example, the command is:
- net user User2 /delete
4. At this point you have removed the user account from your computer, but the user’s profile folder with their data remains. If you want to delete also the user profile folder, proceed to step-2 below.
Step 2. Delete User Profile in System Properties.
1. Simultaneously press the Windows + R keys to open the «Run» command box.
2. Type systempropertiesadvanced and press OK.
3. In System Properties window open the User Profiles Settings.
4. From the list of profiles, choose the Account Unknown and click Delete.
5. Click Yes to confirm your decision.
6. When the user profile folder is removed, close all windows and you’re done.
Method 4. Delete User from User Account options.
The next method to remove a user account in Windows, is from ‘User Accounts’ options:
1. Simultaneously press the Windows + R keys to open the «Run» command box.
2. Type control userpasswords2 and press OK.
3. Select the user that you want to delete and click Remove. Click Yes to confirm your decision.
4. After removing the user, close the ‘User Accounts options’ and follow the instructions on step-2 on method-3 above to remove also the user profile.
Method 5: Delete User via Computer Management.
Another way to delete a user account on Windows 10/11 Pro is by using the Computer Management tool.
* Note: Keep in mind that this method only works in Windows Professional versions only.
1. Search and open the Computer Management.
2. At the left expand the Local Users and Groups and select the Users folder.
3. Right-click on the user that you want to remove and select Delete.
4. Confirm the user deletion by selecting Yes on the warning message.
5. When done, close the Computer Management and follow the instructions on step-2 on method-3 above to remove also the user profile.
Conclusion: Deleting a user profile in Windows 11 is not a difficult task. You can use any of the methods mentioned above to remove an unnecessary profile from your system.
If this article was useful for you, please consider supporting us by making a donation. Even $1 can a make a huge difference for us in our effort to continue to help others while keeping this site free:
- Author
- Recent Posts
Konstantinos is the founder and administrator of Wintips.org. Since 1995 he works and provides IT support as a computer and network expert to individuals and large companies. He is specialized in solving problems related to Windows or other Microsoft products (Windows Server, Office, Microsoft 365, etc.).
Столкнулся с проблемой — глюканул профиль пользователя: винда стала требовать пароль, при этом, пароля там не было. Сброс пароля с помощью net user ни к чему не приводил. В учетных записях (netplwiz) пользователь не отображался, однако в реестре профиль был, команда net users его показывала.
Поскольку, там ничего ценного не было, то решил удалить его и создать другой.
В командной строке ввел net user profile_name /delete — сообщение, что команда выполнена.
Перезагрузил, в командной строке net users — профиль на месте.
net user profile_name /delete выдает ошибку, что профиля нет.
net user profile_name /add выдает ошибку, что профиль есть.
В общем, профиль Шредингера.
При этом, не работает ПУ — Учетные записи пользователей — Изменение типа… и ПУ — Учетные записи пользователей — Удаление… не открываются.
В реестре, в ветке HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList раздел профиля удалил.
ОС Win10 Home
Собственно, вопрос: как удалить профиль не переустанавливая системы?
-
Вопрос задан
-
1896 просмотров