Как определить идентификатор сеанса на удаленной машине для использования с psexec-i с помощью script/powershell/...?

мне нужен сценарий или команда powershell, которая сможет определить идентификатор сеанса конкретного пользователя, вошедшего в систему на удаленной машине, который позже будет использоваться в качестве параметра для выполнения psexec-i удаленного процесса gui на этом сеансе этого пользователя на удаленной машине.

до сих пор мне удалось использовать

psexec remoteMachine -u user -p pswrd query session

чтобы получить список сеансов на удаленной машине:

SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
console                                     0  Conn    wdcon
rdp-tcp#919       user                     1  Active  rdpwd
rdp-tcp#916       user                     3  Active  rdpwd

поэтому я думаю, что мог бы как-то изолировать необходимый id и использовать его-но пока не удалось этого сделать

какие идеи? Может быть, другими, более простыми способами?

Спасибо за помощь.

3 ответов


С помощью модуля powershell PSTerinalServices вы можете получить пользовательские сеансы и идентификаторы.
Модуль можно найти здесь:http://code.msdn.microsoft.com/PSTerminalServices

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

UserName SessionId
-------- ---------
User             1

пока вы используете PSExec, я бы просто придерживался его. Вы можете получить поле ID довольно легко дать имя пользователя, например:

$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

обратите внимание, что вы хотите использовать -d С PSExec в противном случае он будет ждать, пока запущенная программа не выйдет.


Это можно сделать без PowerShell. Есть qwinsta командная строка, который поставляется с Windows, который вы можете использовать.

пример:

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

использование:

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.