Skip to content

Exportar usuarios locales a Excel

Script en PowerShell que obtiene los usuarios locales del equipo, detecta si son administradores y copia todo al portapapeles listo para pegar en Excel.

Terminal window
# 1. Detectamos el nombre del grupo de Administradores de forma segura (funciona en inglés y español)
$AdminSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
$AdminGroupName = $AdminSID.Translate([System.Security.Principal.NTAccount]).Value.Split("\")[1]
$AdminMembers = Get-LocalGroupMember -Group $AdminGroupName -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Name
# 2. Obtenemos los usuarios locales del equipo
$UsuariosLocales = Get-LocalUser
# 3. Procesamos los datos para mantener tus 10 columnas exactas
$Resultados = foreach ($u in $UsuariosLocales) {
# Validamos si el usuario pertenece al grupo de Administradores
$IsAdmin = "NO"
if ($AdminMembers -contains "$env:COMPUTERNAME\$($u.Name)" -or $AdminMembers -contains "BUILTIN\$($u.Name)" -or $AdminMembers -contains $($u.Name)) {
$IsAdmin = "SI"
}
$CuentaActiva = if ($u.Enabled) { "SI" } else { "NO" }
$UltimoCambio = if ($u.PasswordLastSet) { $u.PasswordLastSet.ToString("dd/MM/yyyy") } else { "Nunca" }
$UltimaConexion = if ($u.LastLogon) { $u.LastLogon.ToString("dd/MM/yyyy") } else { "Nunca" }
$DiasInactivo = if ($u.LastLogon) { ((Get-Date) - $u.LastLogon).Days } else { "N/A" }
$NombreMostrar = if ($u.FullName) { $u.FullName } else { $u.Name }
[PSCustomObject]@{
"Nombre" = $NombreMostrar
"Usuario de Inicio" = $u.Name
"Cuenta activa" = $CuentaActiva
"Unidad Organizativa" = "Equipo Local"
"Fecha Caducidad" = "Pendiente definir"
"Ultimo Cambio" = $UltimoCambio
"Ultima Conexion" = $UltimaConexion
"Dias Inactivo" = $DiasInactivo
"Es Administrador" = $IsAdmin
"Descripcion" = $u.Description
}
}
# 4. Formateamos a texto tabulado para Excel
$TextoTabulado = $Resultados | ForEach-Object {
"$($_.'Nombre')`t$($_.'Usuario de Inicio')`t$($_.'Cuenta activa')`t$($_.'Unidad Organizativa')`t$($_.'Fecha Caducidad')`t$($_.'Ultimo Cambio')`t$($_.'Ultima Conexion')`t$($_.'Dias Inactivo')`t$($_.'Es Administrador')`t$($_.'Descripcion')"
}
$Encabezado = "Nombre`tUsuario de Inicio de Sesión`tCuenta activa`tUnidad Organizativa`tFecha Caducidad Contraseña`tÚltimo Cambio Contraseña`tÚltima Conexión`tDías Inactivo`tEs Administrador`tDescripción"
$ResultadoFinal = ($Encabezado + "`r`n" + ($TextoTabulado -join "`r`n"))
# 5. Enviamos al portapapeles
Add-Type -AssemblyName PresentationCore
[Windows.Clipboard]::SetText($ResultadoFinal)
Write-Host "¡Listo! Cuentas locales copiadas. Ya puedes hacer Control + V en tu Excel." -ForegroundColor Green
  1. Abrí PowerShell como Administrador
  2. Pegá el script y ejecutalo
  3. Hacé Control + V en Excel