Home  Tutorials  Powershell


Identification de la dernière date et heure d'authentification d'un utilisateur Active Directory (FR)

Téléchargement du Script - Galerie Microsoft Technet par Ahmed Malek
 

Les administrateurs d'Active Directory utilisent généralement l'attribut lastLogonTimestamp pour identifier les utilisateurs inactifs. Cela peut suffire pour identifier ces utilisateurs, mais, la valeur de cet attribut sera 9-14 jours de retard sur la date actuelle. C'est pourquoi cet attribut ne peut pas être utilisé pour identifier la dernière date et heure d’authentication pour les utilisateurs actifs.

  
Pour identifier la date et l'heure exacte de la derniere authentification d'un utilisateur Active Directory, vous aurez besoin de vous connecter à chaque controleur du domaine de l'utilisateur et extraire la valeur de l'attribut lastLogon de son compte. Une fois cela est fait, vous aurez besoin de comparer ces valeurs et ne garder que la plus haute vu qu’elle représente la dernière date et heure d'authentication Active Directory.

  
Ce processus peut être lourd à faire, surtout si vous êtes dans un immense environnement Active Directory. Pour faciliter les choses, ce script PowerShell a été développé pour extraire automatiquement les valeurs de l'attribut lastLogon des contrôleurs du domaine des utilisateurs et identifier la plus élevée. Ainsi, il vous permettra de connaître la dernière date et heure d’authentication Active Directory et le dernier contrôleur de domaine utilisé pour l'authentification.

  
Il vous suffit de remplacer contoso.msft par le nom de domaine d'utilisateur, puis, après l'exécution du script, vous serez invités à fournir le samaccountname du compte de l'utilisateur.

 

PowerShell
____________________________________________________________________________

###############################################################

# Get_User Last_Logon_v1.1.ps1

# Version 1.1

# Changelog : n/a

# MALEK Ahmed - 17 / 03 / 2013

###################

 

##################

#--------Config

##################

 

$domain = "contoso.msft"

 

##################

#--------Main

##################

 

import-module activedirectory

cls

"The domain is " + $domain

$samaccountname = Read-Host 'What is the User samaccountname?'

"Processing the checks ..."

$myForest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()

$domaincontrollers = $myforest.Sites | % { $_.Servers } | Select Name

$RealUserLastLogon = $null

$LastusedDC = $null

$domainsuffix = "*."+$domain

foreach ($DomainController in $DomainControllers) 

{

    if ($DomainController.Name -like $domainsuffix )

    {

        $UserLastlogon = Get-ADUser -Identity $samaccountname -Properties LastLogon -Server $DomainController.Name

        if ($RealUserLastLogon -le [DateTime]::FromFileTime($UserLastlogon.LastLogon))

        {

            $RealUserLastLogon = [DateTime]::FromFileTime($UserLastlogon.LastLogon)

            $LastusedDC =  $DomainController.Name

        }

    }

}

"The last logon occured the " + $RealUserLastLogon + ""

"It was done against " + $LastusedDC + ""

$mesage = "............."

$exit = Read-Host $mesage