code

powershell - 로컬 사용자 및 해당 그룹 나열

starcafe 2023. 9. 5. 20:41
반응형

powershell - 로컬 사용자 및 해당 그룹 나열

모든 로컬 사용자 및 관련 그룹(사용자, 파워 사용자, 관리자 등)과 함께 보고서를 작성하고 싶습니다.

나는 다음과 같은 방법으로 사용자를 얻습니다.

$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,Get-LocalUser모듈에서 사용자 및 그룹을 가져오고 매핑하는 등의 작업을 수행할 수 있습니다. PowerShell 5.1 이상에서 사용할 수 있습니다.

예:

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별칭을 대신 사용할 수도 있습니다.대부분의 새 cmdlet에 대한 별칭이 있습니다.

일부에서 의문을 제기하는 경우(이것에 대해 질문하지 않은 것으로 알고 있음) 사용자를 추가하는 것은 예를 들어 다음과 같이 수행할 수 있습니다.

$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"
        } 
    } 

mjswensen의 답변을 확장하면 필터가 없는 명령은 몇 분이 걸릴 수 있지만 필터링된 명령은 거의 즉각적입니다.

PowerShell - 로컬 사용자 계정 나열

패스트웨이

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

슬로웨이

Get-WmiObject -Class Win32_UserAccount |? {$_.localaccount -eq $true} | select name, fullname

이것을 사용해 보십시오:),

Get-LocalGroup | %{ $groups = "$(Get-LocalGroupMember -Group $_.Name | %{ $_.Name } | Out-String)"; Write-Output "$($_.Name)>`r`n$($groups)`r`n" }

언급URL : https://stackoverflow.com/questions/4548476/powershell-list-local-users-and-their-groups

반응형