Администраторы время от времени должны удалять старые профили пользователей (уволенные пользователи, неактивные пользователи, и т.д.) в каталоге 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. Предыдущий владелец, перед продажей удалил свою учетную запись. Я поставил свою (локальную). Но в папке пользователей никаких изменений не произошло. В папке «Пользователи» по-прежнему присутствует папка с названием его учетной записью, а папка с моей учетной записью не появилась. В эту папку по-прежнему ведут все быстрые ссылки с сайдбара, новые ссылки из вновь установленных программ(Sublime Text, например)
Как это все исправить?
задан 5 июн 2018 в 12:53
DmytroDmytro
6,7511 золотой знак20 серебряных знаков57 бронзовых знаков
9
Зайди в gode mode. Это делается так создаёшь папку и вместо названия пишешь:
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
У тебя вместо папки появляется файл с настройками. В нём ищешь Параметры учетных записей. Удаляешь учётную запись пред. владельца (если она существует), добавляешь новую и работаешь с ней.
ответ дан 8 июн 2018 в 12:12
T0xee.n17T0xee.n17
8409 серебряных знаков20 бронзовых знаков
Вопрос знатокам: что будет если удалить папку пользователя windows 10? Не удаляя юзера с панели управления
С уважением, я Инкогнито
Лучшие ответы
Nert:
Зайти не сможешь
Override.dll:
В эту учётную запись нельзя будет зайти. Если учётных записей нет, будет создана временная учётная запись.
Видео-ответ
Это видео поможет разобраться
Ответы знатоков
Зибин:
Удаление папки Общие Документы и пользовательского профиля Общие.
Для спокойного удаления папки Общие Документы и пользовательского профиля Общие указанные ниже действия рекомендуется выполнять на чистой установленной системе. Если же у Вас система уже установлена, и на ней уже установлены программы, то прежде чем выполнять инструкции ниже скопируйте все папки из C:\Users\Public\* в C:\Users\ВашПрофиль\*
Вариант 1.
1) Запустите редактор реестра ( Win+R -> regedit -> OK)
2) Откройте ветку
HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3) Затем нажмите правой кнопкой мыши на правой панели и выберите Создать -> Параметр «DWORD».
4) Дайте этому параметру имя NoSharedDocuments и присвойте ему значение 1
5) Перезагрузите компьютер
Вариант 2.
1) Пройдите к ветке реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
2) Удалите следующую ветку:
{59031a47-3f72-44a7-89c5-5595fe6b30ee}
3) Пройдите к ветке реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders\
4) Удалите следующую ветку (если есть) :
{59031a47-3f72-44a7-89c5-5595fe6b30ee}
Вариант 3.
1) Откройте Панель управления\Все элементы панели управления\Система (или Пуск -> Компьютер -> Свойства)
2) Откройте Дополнительные параметры системы
3) Пройдите на вкладку Имя Компьютера и нажмите Идентификация.. .
4) Выберите пункт Компьютер предназначен для домашнего использования.
5) Нажмите Далее, затем Готово, затем Ок
6) Перезагрузите компьютер
После того, как воспользуйтесь решением одного из вариантов проделайте следующие действия:
1) В ветке реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
замените значения с C:\Users\Public\ на C:\Users\ВашПрофиль\
2) В ветке реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
замените значения с %PUBLIC%\ на %USERPROFILE%\
3) Удалите папки (если они остались) :
Диск С: -> Пользователи -> Общие (C:\Users\Public\)
Библиотеки -> Документы -> Общие Документы
Внимание: Если не хотите, чтобы у Вас на рабочем столе появились дублирующиеся иконки файлов, не устанавливайте значение параметра Common Desktop, идентичное рабочему столу Вашего профиля. Например, вместо C:\Users\ВашПрофиль\Desktop укажите C:\Users\ВашПрофиль\Public\Desktop, а вместо %USERPROFILE%\Desktop укажите %USERPROFILE%\Public\Desktop.
Дмитрий Стёпин:
Это системная папка. Удалить ее не сможете. А вот содержимое этой папки удалите, загрузившись в безопасный режим, из-под учетки админа. НО! Там могут быть «хвосты» от каких-либо приложений. Если удалите эти хвосты — приложения или не будут работать, или будут глючить.
Александр:
Ноут не крякнет. Однако стоит заглянуть в эту папку — папки вроде «Рабочий стол», «Главное меню», «Избранное», «Мои документы» скорее всего занимают крохи и могут содержать полезные данные (ярлыки рабочего стола, пункты меню «Пуск» и т. д.) , а вот папку Аппликейшен Дата (почему-то не отправляется ответ с латиницей) можно удалить — обычно туда пишутся временные данные, удаление которых в целом безболезненно. Однако, тут программисту не укажешь особо — там может быть и что-то нужное для какой-либо программы.
В общем, я рекомендую очистить папку «Аппликейшен Дата». Еще «Темп» в «Локал Сеттингс» следует очистить.
П. С. Кроме этого можно удалить все из папки «Темп» в «Виндоус» на диске С. Если что-то не будет удаляться, надо пропустить — значит какая-то программа еще использует этот файл.
*^*Чижик-Пыжик c Фонтанки*^*:
Хватит троллить, сэр! Два абсолютно одинаковых вопроса с двух разных аккаунтов — это не случайность. Это троллизм.
♫ℕ€ℤℕÄӤĶĨℕ★:
Что делать?
тащиться от своей блондинитости!
Эдуард Д:
Восстановление системы s .youtube m/results?search_query=восстановление+системы+windows+10
Stepeecoyote:
Совет — забудь про раздел C: и не лазь больше на него своими кривыми руками
Создавай нового пользователя и настраивай всё заного
Иногда возникает момент когда нужно удалить все следы пребывания некого пользователя в операционной системе. Если рассмотреть в теории всё просто, заходим в В “мой компьютер” это если windows 7 или в “Компьютер” это если Win 8-10, нажимаем правой кнопкой мыши на пустом месте папки и выбираем “свойства” откроется окно
И далее по картинке и по номерам цифр, на третьем пункте выбираем профиль для удаления и нажимаем кнопку удалить как на пункте 4.
Вот и здорово если всё удалилось, но не всегда так, и даже если вы удалите от сюда профиль всё равно данные в реестре останутся.
Для полного удаления заходим в реестр командой “regedit”.
Если вы не знаете как попасть в реестр то вводим в поиске операционной системы эту команду regedit и дальше по картинке переходим в ветку реестра отвечающую за профиля пользователей.
В верху адрес куда нам нужно попасть и на нижней стрелке нужно найти свой профиль для удаления. А дальше просто кнопкой “Delete” и перезагружаем систему, всё больше профиля нет.
На связи Александр Глебов и я вас приветствую на своем ИТ блоге. В очередной своей статье я рассказываю о нескольких простых способах как удалить пользователя в windows 10. Первый раз столкнувшись с этой задачей был заинтригован, так как нужного пункта меню я сразу не нашел, в связи с этим и возникла идея написания данной статьи. Итак, поехали…
Данный способ пригодится тем, кто хочет удалить пользователя, но хочет сохранить его данные. Для этого выполним следующие шаги:
Очень часто пользователи засоряют свои профили в Windows, и чтобы вручную не чистить весь его профиль, можно удалить его полностью. Для этого выполним следующие шаги.
Да, выполнять и то и, то слишком лениво. Для этого есть третий способ удалить запись пользователя из системы и все его данные.
Быстро удалить пользователя из системы и все его данные. Этот способ 2 в одном. Для этого выполним следующие действия:
Вот собственно и все. Как видите удалить профиль или учетную запись пользователя в Windows 10 довольно просто. Если у вас остались какие-то вопросы или замечания, то прошу писать их в комментариях. Буду рад обсудить.
Загрузка…