我注意到用户的 Windows 10 计算机上存在重复的用户帐户,这会阻止就地升级到 Windows 11。因此,我尝试在包含到目前为止的内容的“prepare-for-win11-upgrade.ps1”中删除这些用户帐户:
#REMOVE SYMLINKS
$users = "testuser", "testuser1", "defaultuser0"
foreach ($users in $users) {
$symlinks = Get-ChildItem -Path "C:\Users\$users\appdata\local\" -Force |
Where-Object { $_.LinkType -ne $null -or $_.Attributes -match "ReparsePoint" } |
Select-Object -ExpandProperty FullName
foreach ($pathtotargetsymlinks in $symlinks){
unlink $pathtotargetsymlinks -Force
}
}
#REMOVE USER ACCOUNTS
if (Get-CimInstance -ClassName Win32_UserProfile | Where {$_.LocalPath -eq "c:\users\testuser1"})
{
takeown /f "c:\users\testuser1" /r
$SIDtoDelete = Get-CimInstance -ClassName Win32_UserProfile | Where {$_.LocalPath -eq "c:\users\testuser1"} | Select-Object -ExpandProperty SID
foreach ($SIDtoDelete in $SIDtoDelete)
{
Get-CimInstance -ClassName Win32_UserProfile | Where {$_.SID -eq $SIDtoDelete} | Remove-CimInstance -Verbose -Confirm:$false
}
}
但即使在重新启动后,也会失败并显示“Remove-CimInstance:该进程无法访问该文件,因为它被另一个进程使用”。符号链接文件夹甚至不再存在。 “C:\users\testuser\appdata\local\Application Data”文件夹不存在,其符号链接也不存在。
有人可以建议如何删除卡住的、无用的配置文件吗?如果我从删除相应的注册表项并重新启动开始,删除文件夹的结果相同。这实际上足以执行就地升级,但我想更彻底。
我将内容放入 foreach 中是因为有一个重复的“testuser1”,所以我想确保它遍历整个列表的次数与尝试使用 SID 而不是仅使用名称的次数一样多。
在 sysdm.cpl / 高级 / 用户帐户中,我看不到实际名称,但看到“帐户未知”,并且已经尝试了谷歌搜索的建议(其中有!!!帐户未知!!!)
当然,我以运行 ISE“以管理员身份运行”的本地管理员身份运行代码。
我的情况已经解决了,上面的代码甚至有点矫枉过正。由于创建不当的黄金映像导致用户帐户被锁定,脚本失败。禁用快速启动会解锁锁定的配置文件并删除所需的帐户是一项直接的任务。感谢您引导我走向正确的方向@Silbee 这是我的完整脚本,在我的系统中运行良好。我仍然不知道重复的帐户是如何在注册表中创建的。