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

Другие вопросы по тегам