PowerShell; Удаление пользователей с компьютера с помощью Get-LocalGroupMember
Я пытаюсь удалить всех пользователей из группыUsers
с компьютера, кромеNT Authority
Счета. Я хочу получить список пользователей из группы «Пользователи» и использовать этот список для удаления профилей с компьютера.
Я не эксперт по PowerShell, так что это не моя сильная сторона.
$users = Get-LocalGroupMember Users
ForEach ($user in $users) {
Remove-LocalUser -Name $user
}
Только имена изGet-LocalGroupMember
не похоже на то, чтоRemove-LocalUser
удалю, какое решение?
1 ответ
Если ты бежишьGet-LocalGroupMember Users | fl *
вы можете увидеть все свойства, возвращаемые командлетом.
PS C:\WINDOWS\system32> Get-LocalGroupMember Users | fl *
Name : NT-AUTORITÄT\Authentifizierte Benutzer
SID : S-1-5-11
PrincipalSource : Unknown
ObjectClass : Gruppe
Name : NT-AUTORITÄT\INTERAKTIV
SID : S-1-5-4
PrincipalSource : Unknown
ObjectClass : Gruppe
Name : SimonS\abctest
SID : S-1-5-21-3159913292-2406416548-3156803696-1008
PrincipalSource : Local
ObjectClass : Benutzer
И если ты побежишьGet-Help Remove-LocalUser
в разделе синтаксиса вы можете видеть, что существует один набор параметров, который принимаетSID
, который соответствует нашим потребностям, потому что мы получили его взамен.
PS C:\WINDOWS\system32> Get-Help Remove-LocalUser
SYNTAX
Remove-LocalUser [-InputObject] <LocalUser[]> [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-LocalUser [-Name] <String[]> [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-LocalUser [-SID] <SecurityIdentifier[]> [-Confirm] [-WhatIf] [<CommonParameters>]
Это означает, что мы можем взять возвращаемый SID и использовать его в
Итак, это должно помочь (запустите его в PowerShell с повышенными правами):
Get-LocalGroupMember Users | Where { $_.PrincipalSource -eq 'Local' } | Foreach { Remove-LocalUser -SID $_.SID }
Как видите, у меня естьWhere-Object
в команде выше. Это должно гарантировать, что вы удаляете только локальных пользователей, поэтомуNT-Authority
их не следует удалять. В любом случае, я не думаю, что вы сможете их так легко удалить.
Что касается того, почему это не работает со свойством Name:Get-LocalGroupMember
кажется, возвращает имя в этом форматеComputer\UserName
покаRemove-LocalUser
кажется, принимает только форматUserName