当用户从 Active Directory 中删除时,它会显示为未知用户。
系统属性 -> 高级 -> 用户配置文件 -> 设置...
我必须一直手动删除它。
我的域中有 400 多个工作站,公司员工流失率很高。我的系统只包含 C 盘。如果不删除这些数据,系统会变慢吗?有一些繁重的软件一直在运行。如果我删除它们,会对我的性能产生影响吗?
答案1
您还可以使用 Powershell 脚本删除在一定时间内(例如 30 天或 90 天以上等)未登录工作站的用户的配置文件。
本质上,你想使用类似
#Get user names that have logged onto workstation
$Users = gwmi win32_networkloginprofile | where {$_.name -match "DomainName\\"} | where {$_.name -notmatch "srvtasksched"}
#For each user, delete if they haven't logged into the workstation in over 2 weeks
$Users | foreach{
$Name = $_.Name
$LastLogon = $_.LastLogon
$LogonTime = [System.datetime]::ParseExact($LastLogon.Substring(0, $LastLogon.IndexOf(".")), "yyyyMMddHHmmss", [System.Globalization.DateTimeFormatInfo]::InvariantInfo)
if($(Get-Date).Subtract($LogonTime).TotalDays -ge 14)
{
#User hasn't logged into workstation in over 2 weeks
#Get profile path
$UserSID = $(New-Object System.Security.Principal.NTAccount($Name)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$UserRegKey = GCI 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' | where {$_.Name -match $UserSID}
$ProfilePath = $(Get-ItemProperty $UserRegKey.PSPath -Name ProfileImagePath).ProfileImagePath
Write-Host "Deleting User $Name"
gwmi win32_userprofile | where {$_.SID -eq $UserSID} | foreach {$_.Delete()}
}
我感到很慷慨,所以您可以放入该脚本并运行它,更新域名和自上次登录以来的天数。
至于远程部分,您需要为 powershell 远程处理设置环境,使用 cmdlet Invoke-Command
,并将此脚本粘贴到脚本块参数之后
-ScriptBlock {script here}
答案2
考虑使用 delprof2:http://helgeklein.com/free-tools/delprof2-user-profile-deletion-tool/
它远程运行所需的只是“远程注册表”设置,您可以让它清除所有当前未使用的配置文件(或超过一定年限的配置文件),包括注册表设置。我相信它对未知的配置文件运行良好,但这肯定是我的第一步。设置远程注册表后,您就可以从批处理文件在整个站点上运行 delprof2。