Enumerar usuarios y grupos locales mediante PowerShell

Enumerar usuarios y grupos locales mediante PowerShell

Este artículo discutirá cómo consultar usuarios y grupos locales en nuestra máquina con PowerShell.

Enumerar usuarios y grupos locales mediante PowerShell

Cuando hay una desconexión del dominio debido a problemas de red, la mayoría de las veces, nuestras credenciales de dominio no funcionarán debido a la inaccesibilidad y falta de disponibilidad del servidor de autenticación. Por lo tanto, como mejor estándar, debemos tener a mano nuestras credenciales locales, y como administradores, estas credenciales son parte del grupo de administradores locales.

Podemos usar secuencias de comandos de PowerShell para verificar si tenemos credenciales de administrador, especialmente porque también podemos usar estos comandos para procesar varias máquinas de forma masiva. La siguiente sección analizará varias formas de consultar a los usuarios y grupos locales mediante PowerShell.

Obtenga la membresía del grupo local de un usuario con ADSI

Según Microsoft, las interfaces de servicio de Active Directory (ADSI) son interfaces COM integradas que se utilizan para acceder a los servicios de directorio. Por ejemplo, dentro de la biblioteca ADSI se encuentra la clase [ADSI] que podemos ejecutar en Windows PowerShell para consultar la pertenencia a un grupo de un usuario actual.

Código de ejemplo:

$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 @{Name='UserName';Expression={$_.Name}},@{Name='Group';Expression={$groups -join ';'}}
}

Producción :

UserName           Groups
--------           ------
Administrator      Administrators
DefaultAccount     System Managed Accounts Group
Guest              Guests
user                 Users

Obtenga la membresía del grupo local de un usuario con WMI

WMI es una colección de pautas para simplificar la administración de hardware y software en una red que utiliza computadoras basadas en Windows, y está preinstalado en los sistemas operativos más nuevos de Microsoft. El proveedor proporcionó una interfaz de línea de comandos (CLI) para WMI conocida como WMI Command Line (WMIC) en los sistemas operativos anteriores a Windows 10.

WMIC es compatible con shells y comandos de utilidades existentes en estas versiones anteriores de Windows.

Código de ejemplo:

Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount='True'"

Producción :

AccountType : 512
Caption     : DESKTOP-7GI1260\Administrator
Domain      : DESKTOP-7GI1260
SID         : S-1-5-21-3848050931-464278446-3624840-500
FullName    :
Name        : Administrator

AccountType : 512
Caption     : DESKTOP-7GI1260\user
Domain      : DESKTOP-7GI1260
SID         : S-1-5-21-3848050931-464278446-3624840-1003
FullName    :
Name        : user

El parámetro -Filter está en su lugar para filtrar solo las cuentas que se crean localmente. Por lo tanto, no se forma mediante la creación de una cuenta predeterminada cuando se ha establecido el dominio.

Obtenga la membresía del grupo local de un usuario con los comandos Get-Local

PowerShell 5.1 ahora puede usar los comandos Get-LocalGroupMember, Get-LocalGroup, Get-LocalUser y otros comandos Get-Local* en el módulo Microsoft.PowerShell.LocalAccounts para obtener y asignar usuarios locales y grupos

El uso de estos nuevos comandos lo hace más conciso al escribir nuestro script.

Código de ejemplo:

Get-LocalGroupMember -name users

Producción :

ObjectClass Name                             PrincipalSource
----------- ----                             ---------------
User        DESKTOP-7GI1260\kentm            MicrosoftAccount
Group       NT AUTHORITY\Authenticated Users Unknown
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell User