Как определить идентификатор сеанса на удаленной машине для использования с 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.