usuarios users listar listado grupos grupo exportar and active powershell user-accounts

users - listar usuarios de un grupo active directory powershell



powershell-lista de usuarios locales y sus grupos (4)

Me gustaría tener un informe con todos los usuarios locales y sus grupos relativos (usuarios, usuarios avanzados, administradores, etc.).

Obtengo los usuarios de esta manera:

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

pero no sé cómo recuperar sus grupos. Gracias por adelantado.


Ampliando la respuesta de mjswensen, el comando sin el filtro podría tomar minutos, pero el comando filtrado es casi instantáneo.

PowerShell - Lista de cuentas de usuarios locales

Manera rápida

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

Camino lento

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



Actualización como alternativa a la excelente respuesta de 2010:

Ahora puede usar Get-LocalGroupMember, Get-LocalGroup, Get-LocalUser, etc. para obtener y asignar usuarios y grupos.

Ejemplo:

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

Podrías combinar eso con Get-LocalUser. Alias glu también se puede utilizar en su lugar. Los alias existen para la mayoría de los nuevos cmndlets.

En caso de que algunos se estén preguntando (sé que no preguntaron acerca de esto), por ejemplo, agregar usuarios podría ser así:

$description = "Netshare user" $userName = "Test User" $user = "test.user" $pwd = "pwd123" New-LocalUser $user -Password (ConvertTo-SecureString $pwd -AsPlainText -Force) -FullName $userName -Description $description


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