2010-12-28 3 views
18

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

я получаю пользователей таким образом. :..

$adsi = [ADSI]"WinNT://." 
$adsi.psbase.children | where {$_.psbase.schemaClassName -match "user"} | select @{n="Name";e={$_.name}} 

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

ответ

26
$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 ';'}} 
} 
26

для Googlers, еще один способ получить список пользователей, является использование:

Get-WmiObject -Class Win32_UserAccount 

От http://buckeyejeeps.com/blog/?p=764

+2

Вы хотите, чтобы добавить фильтр к этому qury перечислить только местные счета: -filter «LocalAccount = True» –

10

Update в качестве альтернативы отличный ответ от 2010 года:

Теперь вы можете использовать Get-LocalGroupMember Get-Localgroup Get-Локальный_пользователь и т.д., чтобы получить и пользователи картографических и группы

Пример:

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. Псевдонимы существуют для большинства новых cmndlets.

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

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

New-LocalUser $user -Password (ConvertTo-SecureString $pwd -AsPlainText -Force) -FullName $userName -Description $description 
+2

Просто примечание, это доступно с PowerShell 5.1. –

+0

Get-LocalUser - правильный командлет. Get-LocalUser ** s ** не существует – Vish

Смежные вопросы