すべてのローカル ユーザーとその関連グループ (ユーザー、パワー ユーザー、管理者など) に関するレポートが必要です。
私はこの方法でユーザーを取得します:
$adsi = [ADSI]"WinNT://."
$adsi.psbase.children | where {$_.psbase.schemaClassName -match "user"} | select @{n="Name";e={$_.name}}
しかし、グループを取得する方法がわかりません。前もって感謝します。
すべてのローカル ユーザーとその関連グループ (ユーザー、パワー ユーザー、管理者など) に関するレポートが必要です。
私はこの方法でユーザーを取得します:
$adsi = [ADSI]"WinNT://."
$adsi.psbase.children | where {$_.psbase.schemaClassName -match "user"} | select @{n="Name";e={$_.name}}
しかし、グループを取得する方法がわかりません。前もって感謝します。
Google 社員がユーザーのリストを取得する別の方法は、次を使用することです。
Get-WmiObject -Class Win32_UserAccount
http://buckeyejeeps.com/blog/?p=764より
$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年の優れた回答の代わりとして更新してください:
モジュールGet-LocalGroupMember
の、などを使用してGet-LocalGroup
、PowerShell 5.1 以降で使用できるユーザーとグループを取得およびマップできるようになりました。Get-LocalUser
Microsoft.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
これを使用して、ローカル ユーザーとそのメンバーであるグループの配列を取得します。
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"
}
}