La discrepancia de propietario de dispositivo se produce cuando el usuario actual de un endpoint no coincide con el propietario esperado o asignado. Igual que ocurre con el incumplimiento en la gestión de parches, esto puede ir deteriorando poco a poco tu postura de seguridad, por lo que las auditorías periódicas son imprescindibles. Y con las herramientas adecuadas puedes automatizar las partes más complicadas y recibir alertas en tiempo real sobre inicios de sesión que no cuadran.
En este artículo te explicamos cómo detectar casos de discrepancia de propietario de dispositivo con herramientas nativas y cómo las soluciones RMM modernas pueden mejorar tus informes.
Generar informes de discrepancia de propietario de dispositivo, paso a paso
Sigue estos pasos para recopilar los datos de discrepancia sin perder de vista tus objetivos ni las limitaciones técnicas.
📌 Requisitos previos:
- Privilegios de administrador
- Windows 10/11 o Server 2016+
- PowerShell 5.1 o posterior
- Permisos de Graph API
- Acceso de administrador en los dispositivos
- Acceso a asignaciones usuario-dispositivo fiables (por ejemplo, Intune, AD, registro de activos, CMDB)
- Opcional: permiso de escritura en el registro para el etiquetado local
- Opcional: NinjaOne o un RMM equivalente para automatizar scripts y generar informes
📌 Estrategias de despliegue recomendadas:
| Haz clic para ir directamente a un paso | 💻 Ideal para usuarios individuales |
💻💻💻 Ideal para empresas |
| Paso 1: identifica el usuario actual del dispositivo con PowerShell | ✓ | |
| Paso 2: obtén el propietario esperado desde una fuente externa | ✓ | |
| Paso 3: compara propietario real y esperado e informa de la discrepancia | ✓ | ✓ |
| Paso 4: registra los resultados en el registro para un seguimiento continuo | ✓ | |
| Paso 5: programa y automatiza la ejecución del script | ✓ | ✓ |
Echá un vistazo a la versión en vídeo de Cómo generar informes que muestren la discrepancia entre el propietario y el dispositivo en entornos de clientes y sigue el marco completo de cinco pasos.
Paso 1: identifica el usuario actual del dispositivo con PowerShell
Usa cmdlets potentes para identificar rápidamente a los usuarios de cada dispositivo.
📌 Casos de uso: revisar los registros del dispositivo para detectar la interacción más reciente de un usuario.
- Pulsa Win + R, escribe PowerShell y pulsa Ctrl + Mayús + Intro.
- Para ver quién accedió por última vez al dispositivo, ejecuta lo siguiente:
$lastUserSID = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI").LastLoggedOnUserSID
$lastUsername = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI").LastLoggedOnUser
- Para comprobar el último perfil que utilizó el dispositivo, ejecuta lo siguiente:
$profiles = Get-CimInstance -ClassName Win32_UserProfile | Where-Object { -not $_.Special }
$lastUsed = $profiles | Sort-Object LastUseTime -Descending | Select-Object -First 1
$lastUsed.LocalPath
Paso 2: obtén el propietario esperado desde una fuente externa
📌 Casos de uso: conseguir una lista precisa de las asignaciones de dispositivos a usuarios finales.
📌 Requisitos previos: Graph API
- Pulsa Win + R, escribe PowerShell y pulsa Ctrl + Mayús + Intro.
- Para obtener la lista de propietarios esperados desde Intune mediante Graph API, ejecuta lo siguiente:
Connect-MgGraph -Scopes "Device.Read.All", "DeviceManagementManagedDevices.Read.All", "User.Read.All"
$device = Get-MgDeviceManagementManagedDevice | Where-Object { $_.DeviceName -eq $env:COMPUTERNAME }
$expectedOwner = $device.UserPrincipalName
- Para generar la lista a partir de los datos del registro local, ejecuta lo siguiente:
Get-ItemProperty -Path "<KeyPath>" -Name "ExpectedOwner"
Sustituye <KeyPath> por la ruta de la clave en la que guardas los datos de propiedad (por ejemplo, HKLM:\SOFTWARE\Org\Ownership).
Paso 3: compara propietario real y esperado e informa de la discrepancia
Así puedes automatizar las comprobaciones de propiedad con scripts de PowerShell.
📌 Casos de uso: detectar discrepancias de propietario a partir de los registros de propiedad.
- Pulsa Win + R, escribe PowerShell y pulsa Ctrl + Mayús + Intro.
- Para crear un objeto de informe, ejecuta este script:
if ($lastUsername -ne $expectedOwner) {
$report = [PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
ActualUser = $lastUsername
ExpectedUser = $expectedOwner
Timestamp = (Get-Date).ToString("u")
Mismatch = $true
}
} else {
$report = [PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
ActualUser = $lastUsername
ExpectedUser = $expectedOwner
Timestamp = (Get-Date).ToString("u")
Mismatch = $false
}
}
- Para exportar los resultados de la discrepancia a un archivo .csv, ejecuta lo siguiente:
$report | Export-Csv "C:\Reports\DeviceOwnerMismatch.csv" -NoTypeInformation
Paso 4: registra los resultados en el registro para un seguimiento continuo
⚠️ Advertencia: editar el registro puede provocar problemas en el sistema. Crea una copia de seguridad antes de continuar.
📌 Casos de uso: guardar una copia de los resultados de la auditoría de discrepancias en el registro, como redundancia.
- Pulsa Win + R, escribe PowerShell y pulsa Ctrl + Mayús + Intro.
- Para registrar los resultados del estado de propiedad en el registro, ejecuta lo siguiente:
New-Item -Path "<StoragePath>" -Force
Set-ItemProperty -Path "<StoragePath> -Name "OwnerMismatch" -Value $report.Mismatch
Set-ItemProperty -Path "<StoragePath>" -Name "ActualUser" -Value $report.ActualUser
Set-ItemProperty -Path "<StoragePath>" -Name "ExpectedUser" -Value $report.ExpectedUser
Sustituye <StoragePath> por la ruta de registro de la clave que utilizas para almacenar los datos de propiedad (por ejemplo, HKLM:\SOFTWARE\Org\DeviceAudit).
- Pulsa Win + R, escribe cmd y pulsa Ctrl + Mayús + Intro.
- Para confirmar los cambios en las entradas del registro, ejecuta:
reg query <StoragePath>
Paso 5: programa y automatiza la ejecución del script para detectar discrepancias de propietario
📌 Casos de uso: aprovechar plataformas externas para generar informes sin fricciones.
- Pulsa Win + R, escribe PowerShell y pulsa Ctrl + Mayús + Intro.
- Para automatizar las comprobaciones periódicas de propiedad, ejecuta lo siguiente:
schtasks /create /tn "DeviceOwnerAudit" /tr "powershell.exe -File C:\Scripts\CheckOwnerMismatch.ps1" /sc weekly /st 03:00 /ru SYSTEM
- También puedes ejecutar los scripts desde un RMM (por ejemplo, NinjaOne) para despliegues a escala de toda la empresa.
⚠️ Aspectos a tener en cuenta
| Riesgos | Posibles consecuencias | Soluciones |
| Graph API devuelve datos de propiedad obsoletos | Dispositivos con propiedad correcta marcados como discrepancia | Contrasta los datos con varias fuentes externas (por ejemplo, registros de RR. HH. o datos del registro local). |
| El script falla sin avisar | Alertas que no llegan y discrepancias que pasan desapercibidas | Aplica control de versiones a los scripts de PowerShell. |
| Usuario identificado incorrectamente por una caché de perfil obsoleta | Falso positivo | Usa el registro de eventos con Get-WinEvent para revisar el historial de inicios de sesión. |
| Error de lógica al comparar el propietario real y el esperado | Auditorías poco fiables y trabajo adicional de revisión | Verifica las dos variables antes de compararlas y añade comprobaciones de valores nulos. |
Puntos clave al asociar el agente de usuario con el dispositivo
Ten presentes estas cuestiones cuando recopiles datos para los informes de propiedad de dispositivos.
Puestos de trabajo compartidos
Los equipos de uso compartido también deben contemplarse en tus informes de discrepancias. Para excluir entornos compartidos, como los kioscos de una tienda, durante las auditorías de propiedad, añade el identificador de seguridad (SID) de su cuenta al siguiente registro:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedPC\Exemptions
Dispositivos solo en el cloud
En los endpoints orientados al cloud, Microsoft Graph API es el recurso principal para consultar la propiedad del dispositivo. Obtén los propietarios registrados ejecutando lo siguiente:
GET /devices/{id}/registeredOwners
Integración con el aprovisionamiento
La asignación de usuarios es un paso clave del aprovisionamiento de dispositivos. En esa fase se utiliza el portal de Intune o los archivos CSV de Autopilot, así que tenlo en cuenta si necesitas más pistas para resolver un problema.
Desviación de roles
Los cambios de puesto, las renovaciones de hardware y el uso no autorizado son las causas más habituales de discrepancia de propietario. Mantén tus endpoints bajo control con plataformas de gestión que ofrezcan soluciones escalables.
Guía de inicio rápido
NinjaOne te ayuda a generar informes que muestran la discrepancia entre el propietario y el dispositivo en entornos de clientes. La plataforma ofrece herramientas y capacidades de automatización que te permiten:
1. Detectar discrepancias con scripts de PowerShell e integraciones con Graph API
2. Automatizar la remediación para resolver los problemas de propiedad
3. Asociar agentes de usuario con dispositivos para un seguimiento preciso
4. Simplificar las auditorías con funciones completas de informes
Resolución de problemas en los informes de discrepancias
Así se resuelven los problemas de discrepancia más frecuentes entre los MSP.
Falta el propietario esperado
Si no aparece el propietario esperado del dispositivo, busca los datos del endpoint en Intune y comprueba que tu clave de registro personalizada para el seguimiento de la propiedad (por ejemplo, HKLM:\SOFTWARE\Org\DeviceOwners) tiene información.
No se puede acceder a las claves del registro
Algunas rutas del registro requieren privilegios de administrador para acceder o modificarlas. Inicia sesión con credenciales de administrador o ejecuta Start-Process powershell -Verb RunAs para elevar tus permisos.
Varios usuarios muestran actividad
Es habitual que aparezcan varios usuarios al ejecutar Win32_UserProfile. Para acceder al evento de inicio de sesión más relevante, ejecuta lo siguiente y ordénalos por marca de tiempo:
Get-CimInstance Win32_UserProfile | Sort-Object LastUseTime -Descending | Select-Object -First 1
Tiempo de espera agotado en Graph API
Si recibes errores de tiempo de espera al recuperar datos con Graph API (por ejemplo, 429 Too Many Requests), utiliza las cabeceras Retry-After y los parámetros $top, $skip y @odata.nextLink.
Los servicios de NinjaOne simplifican la detección de discrepancias
NinjaOne mejora la detección de discrepancias de estas formas:
- Ofrece detección permanente y alertas en tiempo real.
- Despliega comprobaciones de discrepancia en toda la empresa.
- Revisa los valores del registro en busca de marcas de discrepancia.
- Agrupa los dispositivos que no cumplen los requisitos para que los revise un técnico.
- Automatiza los flujos de trabajo de remediación (por ejemplo, reasignación de propietario o creación de tickets).
- Genera informes de todos los clientes para detectar y corregir la desviación de dispositivos.
Automatiza la recopilación de datos para tu informe de discrepancias usuario-dispositivo
Con herramientas avanzadas puedes recopilar, analizar y almacenar los datos de discrepancia de todo tu sistema. Además, aprovecha las plataformas RMM y sus capacidades de automatización para eliminar el error humano y aplicar soluciones escalables, como las funciones personalizadas y los informes visuales.
Temas relacionados: