Scripting 如何使用script/powershell/…确定远程计算机上用于psexec-i的会话id。。。?
我需要一个脚本或powershell命令,该命令将能够确定远程计算机上特定登录用户的会话id,稍后用作远程计算机上该用户会话上远程gui进程的psexec-I执行的参数 到目前为止,我设法使用了Scripting 如何使用script/powershell/…确定远程计算机上用于psexec-i的会话id。。。?,scripting,powershell,automation,psexec,Scripting,Powershell,Automation,Psexec,我需要一个脚本或powershell命令,该命令将能够确定远程计算机上特定登录用户的会话id,稍后用作远程计算机上该用户会话上远程gui进程的psexec-I执行的参数 到目前为止,我设法使用了 psexec \\remoteMachine -u user -p pswrd query session 要获取远程计算机上的会话列表,请执行以下操作: SESSIONNAME USERNAME ID STATE TYPE DEVICE
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并使用它,但还没有做到这一点
有什么想法吗?
也许还有其他更简单的方法
谢谢您的帮助。只要您使用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,否则它将等待启动的程序退出。使用psternalservices powershell模块,您可以获取用户会话和ID。可在此处找到该模块:
没有PowerShell也可以做到这一点。 有一款附带了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.
嗨,Keith,我遇到一个错误,说查询以代码1退出。但是,如果我只是运行“psexec\\remoteMachine-u adminuser-p密码查询会话”(不带$results=),它工作得很好。有什么想法吗?提前感谢您的帮助!您好,我已经打印了带有“Write Host session id=$id”的$id,它是“session id=13”。正则表达式有问题吗?似乎“3”是正确的会话id,但“1”是错误的前缀。我相信这个问题是我知道这是一个相当老的问题的重复,但值得一提的是,我发布了一个详细的答案,可能会解决您的问题。
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.