Letztes Login eines Benutzers auf einem Windows-PC ermitteln

    Wenn man herausfinden möchte, wann sich ein lokaler Benutzer das letzte Mal an einem Rechner angemeldet hat, dann bekommt man diese Information über WMI. Als Tools dafür eignen sich wmic oder PowerShell. Möchte man das letzte Login eines Domänen-Users erfahren, dann erschließt sich dieses über eine Anfrage an das Active Directory.

    Für die Auskunft über die letzte Anmeldung eines lokalen Benutzers ist das WMI-Objekt Win32_NetworkLoginProfile zuständig, das unter anderem den Benutzernamen und den Zeitpunkt des Logins vorhält. In wmic existiert dafür ein Alias namens netlogin, das die Abfrage vereinfacht. Um detaillierte Angaben zu anderen Benutzern zu erhalten, muss man folgenden Befehl in einer Eingabeaufforderung mit administrativen Rechten eingeben:

    wmic NetLogin where (name like "%admin%") get name, lastlogon

    Der Aufruf von wmic in dieser Form gibt den Benutzernamen und die Zeit des letzten Logins aus, und zwar für alle User, deren Name die Zeichenkette "admin" enthält. Lässt man die Einschränkung mittels where-Klausel weg, dann erhält man die Informationen für sämtliche lokale Konten. Wie generell bei WMI lässt sich die wmic-Anfrage auch an entfernte Rechner stellen, indem man den Parameter /node:PC-Name hinzufügt.

    Konvertiertes Datumsformat mit PowerShell

    Das Ergebnis von wmic hat den Schönheitsfehler, dass es Zeit und Datum in einer einzigen Zeichenkette ausgibt, die mit dem Jahr beginnt. Möchte man hier eine besser lesbare Form, dann empfiehlt sich der Einsatz von PowerShell:

    Get-WmiObject -class Win32_NetworkLoginProfile -Filter "name like '%admin%'" | select Name, @{Name="Letzter Login";Expression={$_.ConvertToDateTime($_.LastLogon)}}

    Der PowerShell-Aufruf fällt etwas länger aus, weil er die von WMI gelieferte Datumsangabe in einer Calculated Property mit Hilfe der dafür vorhandenen Konvertierungsfunktion in ein angenehmeres Format bringt.

    Letztes Login eines Domänen-Users erfragen

    Wenn man das letzte Login eines Domänen-Users ermitteln will, muss man zu diesem Zweck das Active Directory konsultieren. Auch da empfiehlt sich PowerShell, in der man diese 3 Befehle absetzt, um beispielsweise die Infos für Administrator zu ermitteln:

    Import-Module ActiveDirectory
    $user = Get-ADUser "Administrator" | Get-ADObject -Properties lastLogon
    [DateTime]::FromFileTime($user.lastlogon)

    Dabei handelt es sich um die absolute Minimalvariante, die etwa keinen Domain Controller explizit auswählt, sondern den Standard-DC nimmt. Außerdem fängt es keine Fehler ab, die auftreten können, wenn ein User nicht existiert oder sich nie angemeldet hat.

    Keine Kommentare