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

后端 未结 3 812
独厮守ぢ
独厮守ぢ 2020-12-30 14:11

I am in need of a script or powershell command that will be able to determine the session id of a specific logged in user on remote machine, to be later used as parameter to

相关标签:
3条回答
  • 2020-12-30 14:40

    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.
    
    0 讨论(0)
  • 2020-12-30 14:46

    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.

    0 讨论(0)
  • 2020-12-30 14:49

    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,SessionId
    
    UserName SessionId
    -------- ---------
    User             1
    
    0 讨论(0)
提交回复
热议问题