Búsqueda de sitios web

Exportar informe de usuarios inactivos de Microsoft 365


Quiere encontrar todos los usuarios inactivos de Microsoft 365. No hay ningún beneficio en mantener activas las cuentas de usuario cuando no hay actividad. Las cuentas de usuario inactivas se convierten en objetivos fáciles para los piratas informáticos y usted debe desactivarlas. En este artículo, aprenderá cómo exportar el informe de usuarios inactivos de Microsoft 365.

¿Qué son los usuarios inactivos de Microsoft 365?

Un usuario inactivo de Microsoft 365 es cuando el usuario no ha iniciado sesión durante los últimos días. Esto puede ser diferente para cada organización. Algunos consideran que una cuenta inactiva es válida cuando no se ha iniciado sesión en los últimos 60 o 90 días. Algunos encuentran que es un período de 30 días.

El Centro para la Seguridad de Internet (CIS) recomienda eliminar o deshabilitar cualquier cuenta inactiva después de un período de 45 días de inactividad, cuando sea compatible.

Consulte 5.3: Desactivar cuentas inactivas.

Importante: Necesita una licencia de edición Microsoft Entra ID P1 o P2 para ver la fecha del último inicio de sesión.

Verifique la fecha del último inicio de sesión del usuario en el centro de administración de Microsoft 365

Para verificar la fecha del último inicio de sesión del usuario de Microsoft 365 en el Centro de administración de Microsoft 365, siga estos pasos:

  1. Iniciar sesión en el centro de administración de Microsoft 365

  2. Expandir Usuarios

  3. Haga clic en Usuarios activos

  4. Seleccione el Usuario

  1. Haga clic en Cuenta > Ver los últimos 30 días

  1. Aparecen la fecha del último inicio de sesión, el estado y el motivo del error (si está disponible).

¿Qué sucede si desea exportar el último estado de inicio de sesión de todos los usuarios? PowerShell al rescate.

Exportar script de PowerShell de usuarios inactivos de Microsoft 365

El script de PowerShell Export-M365InactiveUsers.ps1 obtendrá todos los usuarios de Microsoft 365/Microsoft Entra ID y exportará un informe a un archivo CSV que muestra cuántos días han transcurrido desde su último inicio de sesión.

Nota: El valor LastSuccessfulSignInDate comenzará a aparecer en el informe dentro de 6 horas. Los datos de esta propiedad no se completan y los inicios de sesión comienzan a registrarse después del 1 de diciembre de 2023.

Para cada usuario, recopila la siguiente información:

  1. Identificación

  2. Nombre principal de usuario

  3. Nombre para mostrar

  4. Correo electrónico

  5. Tipo de usuario

  6. Cuenta habilitada

  7. Última fecha de inicio de sesión exitosa

  8. Días desde el último inicio de sesión

  9. CreadoFechaHora

  10. Tiene licencia

Prepare el script de PowerShell Export-M365InactiveUsers

Cree dos carpetas en la unidad (C:):

  • Temperatura

  • Guiones

Descargue el script de PowerShell Export-M365InactiveUsers.ps1 y colóquelo en la carpeta C:\scripts. El script exportará el archivo CSV a la carpeta C:\temp.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el siguiente código en el Bloc de notas. Asígnale el nombre Export-M365InactiveUsers.ps1 y colócalo en la carpeta C:\scripts.

<#
    .SYNOPSIS
    Export-M365InactiveUsers.ps1

    .DESCRIPTION
    Export Microsoft 365/Microsoft Entra ID inactive users report.

    .LINK
    www.alitajran.com/export-microsoft-365-inactive-users/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 12/13/2023 - Initial version
    V1.10, 02/26/2024 - Added IsLicensed column
    V1.20, 04/02/2024 - Calculate DaysSinceLastSignIn from LastSuccessfulSignInDateTime property
#>

# Export path for CSV file
$CSVPath = "C:\Temp\InactiveUsers.csv"

# Parameters
$InactiveUsers = @()

# Connect to Microsoft Graph API
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

# Get properties
$Properties = @(
    'Id',
    'DisplayName',
    'Mail',
    'UserPrincipalName',
    'UserType',
    'AccountEnabled',
    'SignInActivity',
    'CreatedDateTime',
    'AssignedLicenses'
)

# Get all users along with the properties
$AllUsers = Get-MgBetaUser -All -Property $Properties | Select-Object $Properties

foreach ($User in $AllUsers) {
    $LastSuccessfulSignInDate = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        $User.SignInActivity.LastSuccessfulSignInDateTime
    }
    else {
        "Never Signed-in."
    }

    $DaysSinceLastSignIn = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        (New-TimeSpan -Start $User.SignInActivity.LastSuccessfulSignInDateTime -End (Get-Date)).Days
    }
    else {
        "N/A"
    }

    # Check if the user is licensed
    $IsLicensed = if ($User.AssignedLicenses) {
        "Yes"
    }
    else {
        "No"
    }

    # Collect data
    if (!$User.SignInActivity.LastSuccessfulSignInDateTime -or (Get-Date $User.SignInActivity.LastSuccessfulSignInDateTime)) {
        $InactiveUsers += [PSCustomObject]@{
            Id                       = $User.Id
            UserPrincipalName        = $User.UserPrincipalName
            DisplayName              = $User.DisplayName
            Email                    = $User.Mail
            UserType                 = $User.UserType
            AccountEnabled           = $User.AccountEnabled
            LastSuccessfulSignInDate = $LastSuccessfulSignInDate
            DaysSinceLastSignIn      = $DaysSinceLastSignIn
            CreatedDateTime          = $User.CreatedDateTime
            IsLicensed               = $IsLicensed
        }
    }
}

# Display data using Out-GridView
$InactiveUsers | Out-GridView -Title "Inactive Users"

# Export data to CSV file
try {
    $InactiveUsers | Export-Csv -Path $CSVPath -NoTypeInformation -Encoding UTF8
    Write-Host "Script completed. Results exported to $CSVPath." -ForegroundColor Cyan
}
catch {
    Write-Host "Error occurred while exporting to CSV: $_" -ForegroundColor Red
}
  • Línea 23: Editar ruta del archivo CSV

Conéctese a Microsoft Graph PowerShell

Antes de que podamos continuar y obtener el estado inactivo para todos los usuarios, debemos instalar y conectarnos a Microsoft Graph PowerShell.

Inicie Windows PowerShell como administrador y ejecute los siguientes comandos.

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

Importante: Instale siempre los módulos Microsoft Graph PowerShell y Microsoft Graph Beta PowerShell. Esto se debe a que algunos cmdlets aún no están disponibles en la versión final y no funcionarán. Actualice ambos módulos a la última versión antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.

Ejecute el cmdlet Connect-MgGraph.

Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

Ejecute el script de PowerShell Export-M365InactiveUsers

Obtenga todos los usuarios inactivos con PowerShell. Ejecute el siguiente comando para ejecutar el script Export-M365InactiveUsers.ps1.

c:\scripts\.\Export-M365InactiveUsers.ps1

Vista fuera de la red

Un Out-GridView mostrará columnas con todos los usuarios inactivos y mucha más información.

Abrir el archivo CSV del informe de usuarios inactivos de Microsoft 365

El script de PowerShell Export-M365InactiveUsers.ps1 exportará la inactividad de los usuarios de Microsft 365 a un archivo CSV. Busque el archivo InactiveUsers.csv en la ruta C:\temp.

Abra el archivo CSV con su aplicación favorita. En nuestro ejemplo, es Microsoft Excel.

¿Esto le ayudó a exportar usuarios inactivos de Microsoft 365 a un archivo CSV?

Nota: ¿Quiere comprender las tres propiedades de inicio de sesión y cómo recuperarlas? Lea el artículo Exportar la fecha y hora del último inicio de sesión de los usuarios de Microsoft 365.

Leer más: Bloquear el inicio de sesión desde buzones de correo compartidos »

Conclusión

Aprendió a exportar usuarios inactivos desde Microsoft 365. Obtenga el informe de usuarios inactivos con el script de PowerShell Export-M365InactiveUsers y revíselo detenidamente. Compruebe por qué no hay actividad de inicio de sesión de usuarios y desactive las cuentas de usuarios inactivos para proteger su organización.

Disfrutaste este artículo? También te puede interesar Exportar usuarios de Azure AD a CSV con PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados