Como puedo saber en que equipos esta logueado un usuario de Active Directory con powershell

Juan Luis Becerril Franco 0 Puntos de reputación
2024-11-11T22:10:44.25+00:00

Tengo una cuenta de dominio bloqueada perono cuantoconun programa de auditoria, como puedo saber enque equipos esa cuenta tiene la sesion abierta

Windows Server
Windows Server
Familia de sistemas operativos de servidor de Microsoft que admiten administración de nivel empresarial, almacenamiento de datos, aplicaciones y comunicaciones.
213 preguntas
0 comentarios No hay comentarios
{count} votos

2 respuestas

Ordenar por: Lo más útil
  1. Gao Chen 4,305 Puntos de reputación Proveedor de Microsoft
    2024-11-11T22:51:32.8333333+00:00

    Hola Juan Luis Becerril Franco,

    ¡Bienvenido(a) a Microsoft Q&A!

    En este caso, puedes usar un script. Para esto, puedes seguir los siguientes pasos:

    1. Instala el módulo de Active Directory si aún no lo tienes:
       Install-WindowsFeature -Name RSAT-AD-PowerShell
    
    1. Usa el siguiente script para buscar los equipos donde el usuario ha iniciado sesión. Este script consulta los registros de eventos de seguridad en los controladores de dominio:
       $username = "nombre_de_usuario"  # Reemplaza con el nombre del usuario
       $computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
    
       foreach ($computer in $computers) {
           try {
               $sessions = Get-WinEvent -ComputerName $computer -FilterHashtable @{LogName='Security'; ID=4624} -ErrorAction Stop |
                           Where-Object { $_.Properties[5].Value -eq $username }
    
               if ($sessions) {
                   Write-Output "$username ha iniciado sesión en $computer"
               }
           } catch {
               Write-Output "No se pudo acceder a $computer"
           }
       }
    

    Explicación:

    • Get-ADComputer: Obtiene todos los equipos en Active Directory.
    • Get-WinEvent: Consulta los eventos de inicio de sesión (ID 4624) en cada equipo.
    • Try/Catch: Maneja errores si no se puede acceder a un equipo.

    Este script puede tardar un poco dependiendo de la cantidad de equipos en tu dominio. Asegúrate de tener los permisos necesarios para acceder a los registros de eventos en cada máquina.

    Espero que información brindada fuera útil. Si necesitas más asistencia, estoy a tu disposición.

    Atentamente,

    Gao


    Si esta respuesta resolvió tu consulta, por favor haz clic en 'Aceptar respuesta'. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.


  2. Ian Xue 38,646 Puntos de reputación Proveedor de Microsoft
    2024-11-12T03:46:24.28+00:00

    Hola Juan Luis Becerril Franco,

    Gracias por tu publicación en Microsoft Q&A.

    Puede filtrar los eventos 4624 que se registran por defecto en el registro de seguridad de su DC y, a continuación, analizar la propiedad «Message» de los eventos para comprobar los campos Nombre de cuenta y Dirección de red de origen.

    $xmlQuery = @'
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) &lt;= 3600000]]]</Select>
      </Query>
    </QueryList>
    '@
    
    $results=@()
    Get-WinEvent -FilterXML $xmlQuery | Where-Object { $_.Message -notmatch '(?<=Account Name:\s+)\w+.+\$'} | ForEach-Object {
        $_.Message -match '(?<=Account Name:\s+)\w+.+' | Out-Null
        $account = [string]$matches.Values
        $_.Message -match '(?<=Source Network Address:\s+)\w+.+' | Out-Null
        $address = [string]$matches.Values
    
        $results += [PSCustomObject]@{
            "Account Name" = $account
            "IP Address" = $address
        }
    }
    $results | Format-List 
    

    Este script comprueba los inicios de sesión en 3600000 milisegundos (una hora) y puede modificarlo usted mismo.

    Saludos cordiales, Ian Xue


    Si la respuesta es útil, haga clic en «Aceptar respuesta» y vote por ella.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas pueden ser marcadas como Respuestas aceptadas por el autor de la pregunta, lo que indica a los usuarios que la respuesta resolvió su problema.