Anmelde-Statistiken mit der Powershell

19. Februar 2018

Oftmals benötigen die Administratoren bestimmte Informationen über die Benutzer im Active Directory (AD). So kann es etwa wichtig sein, genau aufzulisten, zu welchem Zeitpunkt sich die Einzelnen Benutzer am AD zuletzt angemeldet haben. Über die GUI (Grafische Benutzeroberfläche) lässt sich diese Aufgabe dies nicht besonders elegant lösen. Mit dem passenden Powershell-Skript dagegen kann dies auch bei einer größeren Anzahl von abzufragenden Benutzerkonten schnell und effektiv gelöst werden.

Dazu setzen die Administratoren auf das passende Listing aus der Technet-Galerie. An dieser Stelle finden die Systembetreuer das Skript-Modul, eine Anleitung sowie die benötigten Systemvoraussetzungen (etwa mindestens Powershell Version 2.0, .NET Framework 4.5). Die einzelnen Benutzer werden komma- und zeilengetrennt in einer entsprechenden CSV-Datei eingebunden. Danach können die Systembetreuer das Skript etwa wie folgt einsetzen:

#Prüfen, ob das Konto existiert.
If($Results.Count -eq 0)
{
    Write-Warning "The SamAccountName ‚$UserName‘ cannot find. Please make sure that it exists."
}
Else
{
    Foreach($Result in $Results)
    {
        $DistinguishedName = $Result.Properties.Item("DistinguishedName")
        $LastLogonTimeStamp = $Result.Properties.Item("LastLogonTimeStamp")
            
        If ($LastLogonTimeStamp.Count -eq 0)
        {
            $Time = [DateTime]0
        }
        Else
        {
            $Time = [DateTime]$LastLogonTimeStamp.Item(0)
        }
        If ($LastLogonTimeStamp -eq 0)
        {
            $LastLogon = $Time.AddYears(1600)
        }
        Else
        {
            $LastLogon = $Time.AddYears(1600).ToLocalTime()
        }
 
        #Ausgabe in Datei mit kommagetrennten Werten.
        $Hash = @{
                    SamAccountName = $UserName
                    LastLogonTimeStamp = $(If($LastLogon -match "12/31/1600")
                                            {
                                                "Never Logon"
                                            }
                                            Else
                                            {
                                                $LastLogon
                                            })
                    }
        $Objs = New-Object -TypeName PSObject -Property $Hash
 
        $Objs                        
    }
}

Florian Huttenloher

Lesen Sie auch