如何在远程计算机中获取会话的会话ID?

时间:2013-12-18 07:41:38

标签: windows powershell sessionid powershell-remoting

我想在远程计算机中获取用户会话的会话ID。我可以通过命令

实现这一目标
$result = Query Session account17 /server:localhost 

$result = qwinsta account17 /SERVER:localhost 

但这是在本地完成的。

但是当尝试在远程会话上运行该命令时,我收到错误“帐户17没有会话”,即使用户帐户17已登录。我可以通过执行上述操作来获取用户的会话本地命令在机器上。

有没有办法检索远程机器的会话ID?

2 个答案:

答案 0 :(得分:0)

尝试Terminal Services PowerShell Module

PS> Get-TSSession -ComputerName server1 -UserName account17

答案 1 :(得分:0)

你可以通过Win32_LoggedOnUser类从WMI中获取它,但是你必须做一些解析才能很好地解决它:

gwmi win32_loggedonuser -ComputerName $computername |
foreach {
          [PSCustomObject]@{
             User = $_.antecedent -replace '.+Domain="(.+)",Name="(.+)"','$1\$2'
             Session = $_.dependent -replace '.+LogonID="(\d+)"','$1'
             }
        }

或者您可以使用CIM:

Get-CimInstance win32_loggedonuser -ComputerName $computername |
foreach {
          [PSCustomObject]@{
             User = $_.antecedent -replace '.+Name = "(.+)", Domain = "(.+)".','$2\$1'
             Session = $_.dependent -replace '.+LogonID = "(\d+)".','$1'
             }
        }