使用 powershell 从 windows 10 中删除本地用户和数据

Remove local user and data from windows 10 using powershell

我正在尝试从计算机(名为 Deltagare)中删除本地用户。我需要删除 C:/Users/username 中的帐户和与该帐户关联的文件。当 运行 以管理员身份运行脚本时,我遇到了访问被拒绝事件的问题。该脚本在管理员帐户上 运行。我已尝试通过使用 takeownicaclsSet-Acl 来转让所有权,但我仍然在 Remove-Item

处被拒绝访问
Remove-LocalUser -Name "Deltagare"
# Grant ownership here using takeown, icacls or Set-Acl
Remove-Item -Path "\?\C:\Users\Deltagare" -Recurse

如何使用 Powershell 删除此文件夹?关于如何获得所有权或我是否需要以其他方式删除用户的任何想法?

我认为 CIM/WMI 最简单。但是,您可能希望在删除用户帐户之前将其删除。

Get-CimInstance -ClassName Win32_UserProfile |
    Where-Object { $_.LocalPath.EndsWith($UserName) } |
    Remove-CimInstance -WhatIf

当然,删除 -Whatif 参数以实际删除配置文件。

按 SID 过滤可能比按本地路径中的用户名过滤更好。

这是获取 sid 并使用 sid 删除配置文件的方法。这将同时处理文件夹和注册表项。

$sid = get-ciminstance win32_useraccount | where name -eq myuser | % sid
get-ciminstance win32_userprofile | where sid -eq $sid | Remove-CimInstance -whatif

删除本地账户听起来很简单,但它至少包括以下三个步骤:

  1. 从本地账户数据库中删除账户
  2. 删除该账号的配置文件目录
  3. 从注册表中删除帐户配置文件

以下函数将执行这三个任务:

function Remove-LocalUserCompletely {

    Param(
        [Parameter(ValueFromPipelineByPropertyName)]
        $Name
    )

    process {
        $user = Get-LocalUser -Name $Name -ErrorAction Stop

        # Remove the user from the account database
        Remove-LocalUser -SID $user.SID

        # Remove the profile of the user (both, profile directory and profile in the registry)
        Get-CimInstance -Class Win32_UserProfile | ? SID -eq $user.SID | Remove-CimInstance
    }
}

# Example usage:
Remove-LocalUserCompletely -Name 'myuser'

您可以在 my answer on SU 中阅读有关删除本地用户 accounts/profiles 的更多信息。