powershell - 列出本地用户及其组

问题描述 投票:22回答:4

我想要与所有本地用户及其相关群组(用户,超级用户,管理员等)进行报告。

我以这种方式得到用户:

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

但我不知道如何检索他们的团体。提前致谢。

powershell user-accounts
4个回答
30
投票
$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 ';'}}
}

34
投票

对于Google员工,另一种获取用户列表的方法是使用:

Get-WmiObject -Class Win32_UserAccount

来自http://buckeyejeeps.com/blog/?p=764


15
投票

更新作为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。大多数新cmndlet存在别名。

如果有人想知道(我知道你没有问过这个)添加用户可能是这样做的:

$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
投票

扩展mjswensen的答案,没有过滤器的命令可能需要几分钟,但过滤后的命令几乎是即时的。

PowerShell - 列出本地用户帐户

快捷方式

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

慢的方式

Get-WmiObject -Class Win32_UserAccount |? {$_.localaccount -eq $true} | select name, fullname
© www.soinside.com 2019 - 2024. All rights reserved.