How to determine the session id on remote machine for usage with psexec -i using script/powershell/...? How to determine the session id on remote machine for usage with psexec -i using script/powershell/...? powershell powershell

How to determine the session id on remote machine for usage with psexec -i using script/powershell/...?


As long as you're using PSExec, I would just stick with it. You can get the ID field pretty easily given a username e.g.:

$username = 'joe'$results = psexec \\remoteMachine -u adminuser -p password query session$id = $results | Select-String "$username\s+(\w+)" |                 Foreach {$_.Matches[0].Groups[1].Value}psexec \\remoteMachine -u $username -i $id -d notepad.exe

Note that you want to use -d with PSExec otherwise it will wait until the launched program exits.


It's possible to do that without PowerShell.There is qwinsta command line tool that ships with Windows that you can use.

Example:

c:\>qwinsta SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE services                                    0  Disc console                                     1  Conn>rdp-tcp#0         YourUser                  2  Active  rdpwd rdp-tcp                                 65536  Listen

Usage:

c:\>qwinsta /?Display information about Remote Desktop Sessions.QUERY SESSION [sessionname | username | sessionid]              [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER] [/VM]  sessionname         Identifies the session named sessionname.  username            Identifies the session with user username.  sessionid           Identifies the session with ID sessionid.  /SERVER:servername  The server to be queried (default is current).  /MODE               Display current line settings.  /FLOW               Display current flow control settings.  /CONNECT            Display current connect settings.  /COUNTER            Display current Remote Desktop Services counters information.  /VM                 Display information about sessions within virtual machines.


With the PSTerinalServices powershell module you can get the user sessions and IDs.
The module can be found here: http://code.msdn.microsoft.com/PSTerminalServices

PS > Get-TSSession -UserName user1 -ComputerName pc1 | select UserName,SessionIdUserName SessionId-------- ---------User             1