Windows angemeldete Nutzer anzeigen

Es ist möglich ein Script wie das folgende zu verwenden und daraus einen Lokal Check zu bauen welcher einfach der Reihe nach alle angemeldeten Benutzer auflistet.

function get-loggedonuser () {
    $regexa = '.+Name = "(.+)",.+Domain = "(.+)".+'
    $regexd = '.+LogonId = "(\d+)".+'
    $logontype = @{
        "0"  = "Local System"
        "2"  = "Interactive" #(Local logon)
        "3"  = "Network" # (Remote logon)
        "4"  = "Batch" # (Scheduled task)
        "5"  = "Service" # (Service account logon)
        "7"  = "Unlock" #(Screen saver)
        "8"  = "NetworkCleartext" # (Cleartext network logon)
        "9"  = "NewCredentials" #(RunAs using alternate credentials)
        "10" = "RemoteInteractive" #(RDP\TS\RemoteAssistance)
        "11" = "CachedInteractive" #(Local w\cached credentials)
    }

    $logon_sessions = @(Get-CimInstance -ClassName Win32_LogonSession -Property *)
    $logon_users = @(Get-CimInstance -ClassName win32_loggedonuser -Property *)
    $session_user = @{}
    $logon_users | ForEach-Object {
        $_.antecedent -match $regexa > $nul
        $username = $matches[1] + "\" + $matches[2]
        $_.dependent -match $regexd > $nul
        $session = $matches[1]
        $session_user[$session] += $username
    }

    $logon_sessions | ForEach-Object {
        $starttime = $_.starttime
        $loggedonuser = New-Object -TypeName psobject
        $loggedonuser | Add-Member -MemberType NoteProperty -Name "Session" -Value $_.logonid
        $loggedonuser | Add-Member -MemberType NoteProperty -Name "User" -Value $session_user[$_.logonid]
        $loggedonuser | Add-Member -MemberType NoteProperty -Name "Type" -Value $logontype[$_.logontype.tostring()]
        $loggedonuser | Add-Member -MemberType NoteProperty -Name "Auth" -Value $_.authenticationpackage
        $loggedonuser | Add-Member -MemberType NoteProperty -Name "StartTime" -Value $starttime
        $loggedonuser
    }
}

get-loggedonuser

Das Script ist jetzt nicht besonders schön oder sehr toll programmiert hat aber erstmal bei mir einfach alle Benutzer angezeigt welche angemeldet sind.
Achtung es kann je nach Windows Version passieren, dass die Regex Ausdrücke nicht die gleichen sind. Einfach probieren.

1 Like