使用 powershell 从 windows 10 中删除本地用户和数据
Remove local user and data from windows 10 using powershell
我正在尝试从计算机(名为 Deltagare)中删除本地用户。我需要删除 C:/Users/username
中的帐户和与该帐户关联的文件。当 运行 以管理员身份运行脚本时,我遇到了访问被拒绝事件的问题。该脚本在管理员帐户上 运行。我已尝试通过使用 takeown
、icacls
和 Set-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
删除本地账户听起来很简单,但它至少包括以下三个步骤:
- 从本地账户数据库中删除账户
- 删除该账号的配置文件目录
- 从注册表中删除帐户配置文件
以下函数将执行这三个任务:
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 的更多信息。
我正在尝试从计算机(名为 Deltagare)中删除本地用户。我需要删除 C:/Users/username
中的帐户和与该帐户关联的文件。当 运行 以管理员身份运行脚本时,我遇到了访问被拒绝事件的问题。该脚本在管理员帐户上 运行。我已尝试通过使用 takeown
、icacls
和 Set-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
删除本地账户听起来很简单,但它至少包括以下三个步骤:
- 从本地账户数据库中删除账户
- 删除该账号的配置文件目录
- 从注册表中删除帐户配置文件
以下函数将执行这三个任务:
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 的更多信息。