28

すべてのローカル ユーザーとその関連グループ (ユーザー、パワー ユーザー、管理者など) に関するレポートが必要です。

私はこの方法でユーザーを取得します:

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

しかし、グループを取得する方法がわかりません。前もって感謝します。

4

6 に答える 6

40

Google 社員がユーザーのリストを取得する別の方法は、次を使用することです。

Get-WmiObject -Class Win32_UserAccount

http://buckeyejeeps.com/blog/?p=764より

于 2013-11-25T23:36:53.383 に答える
31
$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 ';'}}
}
于 2010-12-29T14:03:09.930 に答える
23

2010年の優れた回答の代わりとして更新してください:

モジュールGet-LocalGroupMemberの、などを使用してGet-LocalGroup、PowerShell 5.1 以降で使用できるユーザーとグループを取得およびマップできるようになりました。Get-LocalUserMicrosoft.PowerShell.LocalAccounts

例:

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
于 2016-10-04T06:59:08.853 に答える
0

これを使用して、ローカル ユーザーとそのメンバーであるグループの配列を取得します。

Get-LocalUser | 
    ForEach-Object { 
        $user = $_
        return [PSCustomObject]@{ 
            "User"   = $user.Name
            "Groups" = Get-LocalGroup | Where-Object {  $user.SID -in ($_ | Get-LocalGroupMember | Select-Object -ExpandProperty "SID") } | Select-Object -ExpandProperty "Name"
        } 
    }

ローカル グループとそのメンバーの配列を取得するには:

Get-LocalGroup | 
    ForEach-Object {
        $group = $_
        return [PSCustomObject]@{ 
            "Group"   = $group.Name
            "Members" = $group | Get-LocalGroupMember | Select-Object -ExpandProperty "Name"
        } 
    } 
于 2020-05-21T07:48:38.437 に答える