powershell - список локальных пользователей и их групп - PullRequest
23 голосов
/ 28 декабря 2010

Я хотел бы иметь отчет со всеми локальными пользователями и их относительными группами (пользователи, опытные пользователи, администраторы и т. Д.)*

но я не знаю, как получить их группы. Заранее спасибо.

Ответы [ 4 ]

35 голосов
/ 26 ноября 2013

Для Google, другой способ получить список пользователей - использовать:

Get-WmiObject -Class Win32_UserAccount

С http://buckeyejeeps.com/blog/?p=764

30 голосов
/ 29 декабря 2010
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
$adsi.Children | where {$_.SchemaClassName -eq 'user'} | Foreach-Object {
    $groups = $_.Groups() | Foreach-Object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
    $_ | Select-Object @{n='UserName';e={$_.Name}},@{n='Groups';e={$groups -join ';'}}
}
15 голосов
/ 04 октября 2016

Обновление в качестве альтернативы отличному ответу 2010 года:

Теперь вы можете использовать Get-LocalGroupMember, Get-LocalGroup, Get-LocalUser и т. Д. Для получения и сопоставления пользователей и групп

Пример:

PS C:\WINDOWS\system32> Get-LocalGroupMember -name users

ObjectClass Name                             PrincipalSource 
----------- ----                             --------------- 
User        DESKTOP-R05QDNL\someUser1        Local           
User        DESKTOP-R05QDNL\someUser2        MicrosoftAccount
Group       NT AUTHORITY\INTERACTIVE         Unknown  

Вы можете комбинировать это с Get-LocalUser. Псевдоним glu также может быть использован вместо. Псевдонимы существуют для большинства новых командлетов.

На случай, если кому-то интересно (я знаю, вы не спрашивали об этом) Добавление пользователей может быть сделано, например, так:

$description = "Netshare user"
$userName = "Test User"
$user = "test.user"
$pwd = "pwd123"

New-LocalUser $user -Password (ConvertTo-SecureString $pwd -AsPlainText -Force) -FullName $userName -Description $description
0 голосов
/ 07 сентября 2018

Расширяя ответ mjswensen, команда без фильтра может занять минуты, но отфильтрованная команда почти мгновенная.

PowerShell - список локальных учетных записей пользователей

Быстропуть

Get-WmiObject -Class Win32_UserAccount -Filter  "LocalAccount='True'" | select name, fullname

медленный путь

Get-WmiObject -Class Win32_UserAccount |? {$_.localaccount -eq $true} | select name, fullname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...