Quand les utilisateurs ont ouvert leur session pour la dernière fois ?

Il est possible d''interroger l''attribut Lastlogon ou lastlogontimestamp pour avoir une idée de la dernière ouverture de session de vos utilisateurs. Mais par défaut lastlogon n''est pas répliqué entre les DC et lastlogontimestamp peut avoir un décalage de plusieurs jours jusqu'à 14.

 

Une solution est d''intérroger l''ensemble des DC et de récupérer pour chaque utilisateur la valeur la plus rescente. Le script ci dessous peut vous y aider.

A noter par défaut lastlogon est un entier qui définit le nombre de 100 nano secondes depuis le 1/01/1601.  Donc si le scrit vous donne cette date c''est que l''utilisateur n''a jamais ouvert de session ...

 

# Import-Module ActiveDirectory

function Get-ADUserLastLogon([string]$userName)

{

  $dcs = Get-ADDomainController -Filter {Name -like "*"}

  $time = 0

  foreach($dc in $dcs)

  {

    $hostname = $dc.HostName

    $user = Get-ADUser $userName | Get-ADObject -Properties lastLogon

    if($user.LastLogon -gt $time)

    {

      $time = $user.LastLogon

    }

  }

  $dt = [DateTime]::FromFileTime($time)

  return $dt

   }

function TabLastLogon

 {

param([string]$n,[datetime]$d)

      $obj = New-Object PSObject

      $obj | Add-Member -name Login -membertype NoteProperty -Value ($n)

    $obj | Add-Member -name Last -membertype NoteProperty -Value ($d)

      return $obj

}

$Liste=@()

$user_list = Get-ADUser -Filter *

foreach ($u in $user_list)

{

$last=Get-ADUserLastLogon -UserName $u.samaccountname

 $liste+=TabLastLogon -n $u.samaccountname -d  $last

# Write-Host $u.samaccountname "last logged on at:" $last

}

$Liste | Format-Table

 

Commentaires

Cool

Impeccable, au moins un truc qui fonctionne sur le net :)