Windows-Server-2012-R2

在沒有連接代理的情況下管理 2012 R2 RDSH 池會話

  • March 4, 2016

我正在嘗試在沒有 2012 R2 連接代理角色的 vWorkspace 8.6.1 場內跨 10 多個 2012 R2 RDSH 主機管理使用者會話。

我擔心添加連接代理、創建池和向其中添加伺服器會干擾 vWorkspace 中的策略設置和負載平衡規則設置(兩個驅動程序,一輛車)。而且 vWorkspace 控制項不夠直覺,無法部署到第 1 層支持,而且有些笨拙。

這在 2008 年和以前的版本中不是問題,但現在微軟已經替換了所有以前的獨立工具,並且似乎強制他們的伺服器管理器/連接管理器角色設置。

尋找不引用連接代理的 powershell 腳本(或其他)選項來管理使用者註銷、影子會話等(跨池)。Powershell的大多數腳本/工具現在都引用了一個集合:TechNet Get-RDUserSession

獲取 RDUserSession -ConnectionBroker“rdcb.contoso.com”

您實際上可以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"

您甚至可以更進一步,為您的功能添加開關

那麼您可以將此功能用於您想要的一切。遮蔽、註銷等

引用自:https://serverfault.com/questions/761466