如何远程删除未知用户配置文件?

如何远程删除未知用户配置文件?

当用户从 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。

相关内容