我们的环境(相当小)有 Windows(8.1 和 7)机器,其用户帐户具有管理员权限。为了解决这个问题,我决定编写一个 powershell 脚本,该脚本将添加一个新的管理员帐户并降级当前帐户。运行它之后,我无法再登录任何内容。脚本很简单:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs;
exit
}
net user local_admin SuperSecurePassword /add /comment:"comment" /expires:never
net localgroup "Administrators" local_admin /add
net localgroup "Administrators" "$env:username" /delete
Read-Host -Prompt "Enter!"
首先,它从提升的 PS 实例(取自 SE 上的一个热门问题)重新启动,然后运行命令本身。
所有命令执行后均报告成功(“命令成功”或类似内容)。但是,我无法再登录系统(不能使用新配置文件,也不能使用旧配置文件),并显示以下错误消息:
The User Profile Service service failed the logon. User profile cannot be loaded.
我们没有域名,只有一堆拥有本地帐户的 PC(我知道,我知道)。我做错了什么?
答案1
原来我的默认配置文件文件夹 (Users\Default) 由于某种原因具有不正确的访问权限,因此 Windows 无法使用新创建的帐户将其复制到新配置文件。修复该问题后,我成功登录。
另一个问题是,您必须在将用户从管理员中删除后将其添加到“用户”组。下面这行代码帮我做到了这一点:
net localgroup "Пользователи" "$env:username" /add