自动跟踪 RDP 会话
Shadowing RDP session automatically
我想创建一个 powershell 脚本。我们的支持公司之一需要不时连接到我们的服务器以进行工作,如果他们的工作正常,我需要连接他们的 RDP 会话以观察他们。
服务器:MS Server 2012 R2 x64
情况是我想创建一个脚本;
1- 检查服务器的当前会话
2- 查找来自当前以 RDP 身份登录的用户名(我将给他们连接的用户名)的特定会话 ID
3- 当我从用户名中提取正确的会话 ID(这意味着他当前在线并已连接)时,我想在没有 prompting/requesting 他们批准的情况下隐藏 his/her 会话。
是的,我可以单独执行这些操作,但需要寻找 powershell 脚本或类似的东西。在一次尝试中,我想隐藏 rdp 以更正会话,如果 he/she 不在线,我希望系统 return 向我发送一条信息消息,表明用户名当前不在线。
可能吗?
谢谢&问候
梅丽赫
If memory serves PoSh 本身不支持查询 RDP 会话(除非使用 RDS 代理,但我在这里可能是错的)但您可以通过 query session
轻松做到这一点
我现在无法对其进行测试,但像这样应该可以解决问题:
C:\>query session
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console Administrator1 0 active wdcon
rdp-tcp#1 User1 1 active wdtshare
rdp-tcp 2 listen wdtshare
如果您知道,您甚至可以直接使用用户名调用它。
使用类似
的方法可以轻松完成对会话的跟踪
mstsc /v:"$srv" /shadow:"$id" /control /noconsentprompt
我没有对此进行测试,因此可能需要进行一些调整,但可能的起点可以是
$userSessions = query session user01 /SERVER:server01 | Select-Object -skip 1 | ForEach-Object{$_.Split(' ',[System.StringSplitOptions]::RemoveEmptyEntries)}
$sessionId = $userSessions[2]
mstsc /v:"$srv" /shadow:"$sessionId" /control /noconsentprompt
当然,如果 运行 来自本地服务器,您可以省略 /SERVER:XXX 参数。
希望这可以帮助您入门。
我想创建一个 powershell 脚本。我们的支持公司之一需要不时连接到我们的服务器以进行工作,如果他们的工作正常,我需要连接他们的 RDP 会话以观察他们。
服务器:MS Server 2012 R2 x64
情况是我想创建一个脚本;
1- 检查服务器的当前会话 2- 查找来自当前以 RDP 身份登录的用户名(我将给他们连接的用户名)的特定会话 ID 3- 当我从用户名中提取正确的会话 ID(这意味着他当前在线并已连接)时,我想在没有 prompting/requesting 他们批准的情况下隐藏 his/her 会话。
是的,我可以单独执行这些操作,但需要寻找 powershell 脚本或类似的东西。在一次尝试中,我想隐藏 rdp 以更正会话,如果 he/she 不在线,我希望系统 return 向我发送一条信息消息,表明用户名当前不在线。
可能吗?
谢谢&问候 梅丽赫
If memory serves PoSh 本身不支持查询 RDP 会话(除非使用 RDS 代理,但我在这里可能是错的)但您可以通过 query session
轻松做到这一点我现在无法对其进行测试,但像这样应该可以解决问题:
C:\>query session
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console Administrator1 0 active wdcon
rdp-tcp#1 User1 1 active wdtshare
rdp-tcp 2 listen wdtshare
如果您知道,您甚至可以直接使用用户名调用它。
使用类似
的方法可以轻松完成对会话的跟踪mstsc /v:"$srv" /shadow:"$id" /control /noconsentprompt
我没有对此进行测试,因此可能需要进行一些调整,但可能的起点可以是
$userSessions = query session user01 /SERVER:server01 | Select-Object -skip 1 | ForEach-Object{$_.Split(' ',[System.StringSplitOptions]::RemoveEmptyEntries)}
$sessionId = $userSessions[2]
mstsc /v:"$srv" /shadow:"$sessionId" /control /noconsentprompt
当然,如果 运行 来自本地服务器,您可以省略 /SERVER:XXX 参数。
希望这可以帮助您入门。