我正在尝试管理没有 2012 R2 连接代理角色的 vWorkspace 8.6.1 场内 10+ 2012 R2 RDSH 主机上的用户会话。
我担心添加连接代理、创建池并向其中添加服务器会干扰 vWorkspace 中的策略设置和负载平衡规则设置(两个司机,一辆车)。而且 vWorkspace 控件不够直观,无法部署到一级支持,而且有点笨重。
这在 2008 年及之前的版本中不是问题,但现在微软已经替换了所有之前的独立工具,并且似乎强制设置他们的服务器管理器/连接管理器角色。
寻找一个 powershell 脚本(或其他)选项来管理用户注销、影子会话等(跨池),不引用连接代理。大多数 powershell 脚本/工具现在引用一个集合:TechNet 获取 RDUserSession
获取 RDUserSession-ConnectionBroker“rdcb.contoso.com”
答案1
您实际上可以使用Get-RDUserSession
此任务。只需引用集合名称,而不是连接代理
Get-RDUserSession -collectionname "Mycollection" | ft Username, UnifiedSessionId
这将获取所有 RDP 连接的会话 ID
然后你可以用这个命令来隐藏它们(在这个例子中,sessionid"3"
被隐藏了)
Mstsc /shadow:3 /control
为了让您的生活更轻松,您可以使用查找用户名的函数。
function ShadowSession([string]$UserName, [string]$CollectionName)
{
$SessionID = Get-RDUserSession -collectionname $CollectionName |
select UnifiedSessionId | ? {$_.Username -eq $UserName}
mstsc /shadow:$SessionID /control
}
所以你的命令是
ShadowSession -UserName "User01" -CollectionName "MyCollection"
如果你只有一个 RDS 集合,请使用此
function ShadowSession([string]$UserName)
{
$SessionID = Get-RDUserSession -collectionname "MyCollection" |
select UnifiedSessionId | ? {$_.Username -eq $UserName}
mstsc /shadow:$SessionID /control
}
那么你不必引用集合名称,只需引用用户名
ShadowSession -UserName "User01"
您甚至可以更进一步,向您的功能添加开关
那么您可以使用此功能进行任何您想要的操作。例如,跟踪、注销等。