[PowerShell] ALLE angemeldeten User auslesen

KaeTuuN

Rear Admiral
Dabei seit
Okt. 2002
Beiträge
5.177
Hallo zusammen,

ich habe gerade ein kleines Problem mit PowerShell und finde keine Lösung. Ich hätte gerne eine Funktion, die mir ALLE angemeldeten Benutzernamen zurückgibt.
Mit folgender Abfrage
Code:
Get-WMIObject -class Win32_ComputerSystem | select username
bekomme ich leider nur den Benutzer angezeigt, der das Skript ausführt. Eigentlich müsste ich aber fünf Ergebnisse bekommen. Wo liegt mein Fehler?

Mfg Kae
 

werkam

Alter Meckermann
Dabei seit
Okt. 2001
Beiträge
62.670
Wieviel Benutzer sind denn gleichzeitig angemeldet, doch wohl nur einer (1)?
 

KaeTuuN

Rear Admiral
Ersteller dieses Themas
Dabei seit
Okt. 2002
Beiträge
5.177
Ich habe zwei anmgeldete Nutzer, wovon allerdings nur eine Session aktuell aktiv ist. Das ist aber erstmal egal.
Das Problem ist, dass das Skript nachher im Systemkontext agiert und dann auf angemeldete User überprüfen soll. Da es dann aber nur den Systemuser findet, ist augenscheinlich keiner angemeldet, was fatale folgen haben könnte.

Mfg Kae
 

asdfman

Commander
Dabei seit
März 2008
Beiträge
2.315

KaeTuuN

Rear Admiral
Ersteller dieses Themas
Dabei seit
Okt. 2002
Beiträge
5.177
So, mit folgender Funktion erhalte ich alle angemeldeten User. Allerdings muss ich noch ein wenig an der Formatierung arbeiten.
Code:
Function Get-LoggedOnUsers {
    $computername = $env:COMPUTERNAME
    Get-WmiObject -Class Win32_LogonSession -ComputerName $computername |
    foreach {
        $LogonId = $_.__RELPATH -replace """", "'"
        Get-WmiObject -ComputerName $computername -Query "ASSOCIATORS OF {$LogonId} WHERE ResultClass = Win32_Account" | select "Caption"
    }
}

Get-LoggedOnUsers
Mfg Kae

EDIT: Wenn es interssiert, hier noch eine für mich bessere Variante:
Code:
Function Get-LoggedOnUsers {
    $computername = $env:COMPUTERNAME
    Get-WmiObject -Class Win32_LogonSession -ComputerName $computername |
    ForEach {
        $LogonId = $_.__RELPATH -replace """", "'"
        Get-WmiObject -ComputerName $computername -Query "ASSOCIATORS OF {$LogonId} WHERE ResultClass = Win32_Account" | 
        Where-Object {$_.Domain -eq $Domain} | select "Name"
    }
}
 
Zuletzt bearbeitet:
Top