[英]How do I import a number from a session query in PowerShell/CMD
我正在尝试创建一个 PowerShell 脚本,该脚本允许我查询用户会话并在 RDP 中隐藏所述会话。 我想从qwinsta
拉出活动会话,但是如果我为我的域输入凭据,我只能拉下结果。 这是我在 PowerShell 中的意思的示例:
runas /user:DOMAIN\\USER "cmd /k qwinsta /server:192.168.255.2"
会输出
SESSIONNAME USERNAME ID STATE
services 0 Disc
console jdoe 2 Active
rdp-tcp 65536 Listen
这将拉起 cmd 并让我看到查询的输出。 但是,我不想每次必须远程时都这样做,因为它很乏味。 我是 PowerShell 的新手,所以请原谅我的无知,但是我如何提取 jdoe 的 ID 号(在本例中为数字 2),以变量/字符串的形式将其导入 Powershell,例如$activeSession =
,然后像这样运行脚本
Mstsc /shadow:$activeSession /v:192.168.255.2 /control /NoConsentPrompt /prompt
任何帮助表示赞赏!
如果您想要Active
会话的ID
,您可以执行以下操作:
runas /user:DOMAIN\USER "cmd /a /c qwinsta /server:192.168.255.2 > c:\temp\sessions.txt"
$activeSession = (Get-Content c:\temp\sessions.txt) -match '\b\d+\s+Active\b' -replace '\D'
cmd qwinsta
命令将输出到文件sessions.txt
。 然后就可以使用Get-Content
来读取文件并解析你想要的数据。
-match
和-replace
是使用正则表达式匹配字符串的比较运算符。 \\b
是单词边界。 \\d+
是一位或多位数字。 \\D
是任何非数字。 由于-replace
没有替换字符串,因此会删除任何匹配的字符。
更多的 PowerShell 解决方案可以使用Invoke-Command :
$sessions = Invoke-Command -Scriptblock {qwinsta} -Credential Domain\User -ComputerName 192.168.255.2
$activeSession = $sessions -match '\b\d+\s+Active\b' -replace '\D'
这将需要配置PSRemoting 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.