如何从Windows 10计算机中完全删除用户配置文件?



我想通过Powershell删除Windows 10计算机中的本地用户。

我试过命令

Get-WMIObject -class Win32_UserProfile | Where {((!$_.Special) -and ($_.LocalPath -eq "C:\Users\$user")  -and ($_.LocalPath -ne "C:\Users\UpdatusUser"))} | Remove-WmiObject

上述命令成功删除本地用户。但它无法删除C:Users$userAppData

是否有任何解决方法/黑客来删除用户/应用程序数据文件夹。

成功删除用户后,我也尝试删除文件夹,但出现错误。

错误:请求中指定的标记与重新分析点中存在的标记不匹配

对于错误参考,我尝试了该错误消息的一些解决方法,但均无效。但是如果我确实转移+删除(手动),它将成功删除。

我用来删除的命令如下

Remove-Item C:User$user -Force -Recurse

我以管理员身份运行PowerShell。

提前谢谢。

编辑:使用cmd。

cmd /c rmdir /s /q c:usersuser

Powershell无法处理目录中的不良链接。 卸载那个可怕的"Office"应用程序。 问题在AppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCache. 有具有空链接类型和目标属性的目录联结 (?)。

Windows 10在版本1809中存在一个独特的问题,"Office"应用程序在用户配置文件下创建了奇怪的链接文件和目录。 甚至 WMI 也无法删除配置文件,也无法删除 powershell。

哇,什么样的目录联结没有目标或链接类型? 但它有一个 ReparsePoint 属性和一个在链接末尾带有"l"的模式。

get-item c:usersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbwelocalcache | fl *
PSPath            : Microsoft.PowerShell.CoreFileSystem::C:usersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbwelocalcache
PSParentPath      : Microsoft.PowerShell.CoreFileSystem::C:usersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbwe
PSChildName       : localcache
PSDrive           : C
PSProvider        : Microsoft.PowerShell.CoreFileSystem
PSIsContainer     : True
Mode              : d----l
BaseName          : localcache
Target            : {}
LinkType          :
Name              : localcache
FullName          : C:usersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbwelocalcache
Parent            : Microsoft.MicrosoftOfficeHub_8wekyb3d8bbwe
Exists            : True
Root              : C:
Extension         :
CreationTime      : 8/1/2019 3:29:02 PM
CreationTimeUtc   : 8/1/2019 7:29:02 PM
LastAccessTime    : 8/1/2019 3:29:02 PM
LastAccessTimeUtc : 8/1/2019 7:29:02 PM
LastWriteTime     : 8/1/2019 3:29:02 PM
LastWriteTimeUtc  : 8/1/2019 7:29:02 PM
Attributes        : Directory, ReparsePoint

相关错误报告: https://github.com/powershell/powershell/issues/621 我自己也见过这个。 在文件资源管理器中需要多次尝试才能完全删除配置文件。

编辑:

Win 10 1809:WMI 无法完全删除配置文件(因为 Microsoft.MicrosoftOfficeHub)

假设我以这种方式删除个人资料:

Get-CimInstance win32_userprofile | where localpath -match user$ | Remove-CimInstance

剩下几个文件夹。 他们来了。 删除项说"是 NTFS 交接点。使用 Force 参数删除或修改此对象。 删除项 -force 说"请求中指定的标记与重新分析点中存在的标记不匹配">

C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCache
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocal
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalMicrosoft
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalMicrosoftCLR_v4.0
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalMicrosoftCLR_v4.0UsageLogs
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalLow
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalLowMicrosoft
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalLowMicrosoftCryptnetUrlCache
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalLowMicrosoftCryptnetUrlCacheContent
C:UsersuserAppDataLocalPackagesMicrosoft.MicrosoftOfficeHub_8wekyb3d8bbweLocalCacheLocalLowMicrosoftCryptnetUrlCacheMetaData
@( Get-WMIObject -class 'Win32_UserProfile' -ComputerName 'Terminal001.domain.local' )| 
Where-Object { <**some filter conditions**> } | 
Where-Object { $_.Special -eq $false } | 
Where-Object { $_.Loaded  -eq $false } | 
Where-Object { $_.Status  -eq 2 } | # We remove only local copies of Roaming profiles. We assume there is a copy of Roaming profile on a server.  
Foreach-Object {
$local:profile = $_;
Write-Host -f "Gray" "Deleting $($_.LocalPath)`t" -noNewLine
try {
$local:profile.Delete()
Write-Host "OK!" -f Green
} catch {
Write-Host -f "Yellow" "Unable to delete $($local:profile.LoalPath) : $($_.Exception.Message)"
}
}

有关Status请参阅Win32_UserProfile类的文档

请注意,LocalPath并不总是相等的用户名。例如,如果在创建配置文件时用户名已更改,则LocalPath不会更改。或者,否则,配置文件文件夹可以命名为不Username,而是Username.UserdomainUserName.UserDomain.nnn(nnn - 编号)。

更好的方法是比较 SID:

$userSID = (Get-ADUser 'username').SID
Get-WmiObject -Class 'Win32_UserProfile' .... |
Where-Object {$_.SID -eq $userSID} |
...

最新更新