【发布时间】:2013-09-06 03:48:02
【问题描述】:
我正在编写一个 PowerShell 脚本来找出远程计算机上活动用户的会话 ID,然后使用该会话 ID 启动一个程序。这是我目前所拥有的。
$queryusers = $psexecdirectory + ' \\' + $remotepc + ' -u ' + $domain + '\' + $username + ' -p ' + $password + ' query user'
$results = iex $queryusers
上面的工作正常,下面的示例结果存储在变量$results中
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
usr1 3 Disc 1:12 9/5/2013 11:59
AM
>usr2 rdp-tcp#1 4 Active . 9/5/2013 11:59
AM
我使用下面的代码来获取 ID,但是会话名称“rdp-ctp#0”上的数字会在其他用户登录时发生变化,就像上面的输出一样,使其无用:
$id = $results | Select-String "$rdp-tcp#0\s+(\w+)" |
Foreach {$_.Matches[0].Groups[1].Value}
我不熟悉 PowerShell 语法,也找不到解释格式化选项的网站。有人可以帮我吗?如果您知道一个网站,我可以在其中了解更多关于从字符串中提取 sn-ps 的信息?提前致谢。
【问题讨论】:
-
或者使用更多的powershell(实际上是WMI),你不需要psexec也不需要字符串。 gallery.technet.microsoft.com/scriptcenter/…
标签: session powershell rdp psexec