Búsqueda de sitios web

Encuentre la hora del último inicio de sesión de un usuario de SharePoint desde AD con PowerShell


Requisito: Encuentre la hora del último inicio de sesión de todos los usuarios de SharePoint de la granja para encontrar usuarios inactivos.

Solución: Podemos recuperar la hora del último inicio de sesión del usuario desde el directorio activo (si el proveedor de autenticación es AD) usando PowerShell. En esta publicación de blog, le mostraremos cómo encontrar la hora del último inicio de sesión de un usuario de SharePoint.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Import-Module ActiveDirectory

$UserAccount="vani"
$User = Get-ADUser -Filter {SamAccountName -like $UserAccount} | Get-ADObject -Properties lastLogon 
  
$LogonTime=[DateTime]::FromFileTime($User.LastLogon)
Write-host $LogonTime

Agreguemos un poco más de manejo de errores y encontremos la hora del último inicio de sesión de todos los usuarios de SharePoint.

Script de PowerShell para encontrar la hora del último inicio de sesión del usuario de SharePoint:

Usemos la combinación de módulos de PowerShell de SharePoint y Active Directory para averiguar la hora del último inicio de sesión de todos los usuarios.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Import-Module ActiveDirectory

#Custom Function Get the Last Logon Time of the User from AD 
Function Get-ADUserLastLoginTime($UserAccount)
{
    Try {
        #Set the Error Action
        $ErrorActionPreference = "Stop"

        $User = Get-ADUser -Filter {SamAccountName -like $UserAccount} | Get-ADObject -Properties lastLogon 
  
           if($user.LastLogon) 
           {
               return([DateTime]::FromFileTime($User.LastLogon))
           }
           else
           {
             return "Not Found!"
           }
        }
    catch {
          Write-Host $_.Exception.Message -ForegroundColor Red
        }
    finally {
          #Reset the Error Action to Default
          $ErrorActionPreference = "Continue"
        }
}
#Get All User Profiles
$SiteURL="https://intranet.crescent.com"
$ServiceContext  = Get-SPServiceContext -site $SiteURL
$UserProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)
#Get All User Profiles
$UserProfilesColl = $UserProfileManager.GetEnumerator()

Foreach($UserProfile in $UserProfilesColl)
{
    $UserAccount=$UserProfile["UserName"]
    $LogonTime = Get-ADUserLastLoginTime -UserAccount $UserAccount
    Write-host "Last Logon Time of the User $UserAccount is $LogonTime"
}

Tenga en cuenta que SharePoint no almacena la marca de tiempo del último inicio de sesión. El script anterior extrae datos del directorio activo. Por lo tanto, los datos pueden ser un poco inconsistentes, porque si el usuario inicia sesión en cualquier otro sistema como Exchange Server Email, AD tendrá esa marca de tiempo, ¡no importa si el usuario ha iniciado sesión en SharePoint o no! Aquí está mi otra publicación sobre ¿Cómo obtener la marca de tiempo del último inicio de sesión de un usuario de Azure AD para SharePoint Online?

Sin embargo, si analiza los registros de IIS de la aplicación web de SharePoint utilizando el analizador de registros, puede encontrar la actividad del usuario en particular: ¿Cómo utilizar el analizador de registros con SharePoint?

Artículos relacionados