Can I find the session ID for a user logged on to another machine?

I want to open an application on another computer on the same network via the command line. The scenario here is that the user is in a room surrounded by about 20 computers and wants to be able to launch the same app on every computer without walking from screen to screen opening it up on each individual machine. I've discovered that I can get the basic functionality for this using PsExec as follows:

psexec \\[computer] -u [username] -p [password] -d -i [SessionID] [program]

For computer, username, password, and program, I'm good. Does anyone know of a way I can figure out which SessionID is assigned to a particular user logged on to a particular machine on the network? Alternately, is there a better way to go about what I'm trying to accomplish?


You can use the qwinsta (or query session) tool to list all Terminal Server sessions.

Some servers allow to use it remotely directly:

qwinsta /server remotehost

In most cases, though, you'll have to run it through psexec:

psexec \\remotehost qwinsta

You can try the PowerShell version:

Get-Process powershell | Select-Object SessionId | Format-List

or the MSDOS batch version:

tasklist /FI "IMAGENAME eq tasklist.exe" /FI "USERNAME eq %USERNAME%" /FO LIST | find "Session#:"

psexec does not require a session id.


Using Process Explorer on the computer you can use the Users menu to determine the session ID. The number at the beginning of each entry in the menu is the session ID.

It looks like typically you should be able to use 0 for the default session.