Answers:
您可以使用tsdiscon断开本地或远程会话的连接。
Disconnects a terminal session.
TSDISCON [sessionid | sessionname] [/SERVER:servername] [/V]
sessionid The ID of the session.
sessionname The name of the session.
/SERVER:servername Specifies the Terminal server (default is current).
/V Displays information about the actions performed.
我发现TSDISCON不会删除“ Disc”连接的会话。
我用注销代替了TSDISCON。
您可以使用PSTerminalServices PowerShell模块:
Get-TSSession-计算机名服务器1-状态活动| 断开TSSession -WhatIf
您未指定是否要在不关闭或重新启动计算机的情况下执行此操作。但是,如果您不介意重启或关机,则可以致电:
shutdown -r -f -m \\computer_to_restart
实际上,这将强制重新启动计算机。
即使这个问题已经很老了,如果没有qwinsta / query / tsdiscon,也几乎没有解决所有版本的方法,即所有Windows主版本。
但是,有一个简单的Powershell版本可以断开会话:
$code = @'
[DllImport("wtsapi32.dll")]
static extern IntPtr WTSOpenServer([MarshalAs(UnmanagedType.LPStr)] String pServerName);
[DllImport("wtsapi32.dll")]
static extern void WTSCloseServer(IntPtr hServer);
[DllImport("Wtsapi32.dll")]
static extern bool WTSDisconnectSession(System.IntPtr hServer, int SessionId, bool bWait);
public static void DisconnectSession (String ServerName, int SessionId)
{
IntPtr serverHandle = WTSOpenServer(ServerName);
WTSDisconnectSession(serverHandle, SessionId, true);
WTSCloseServer(serverHandle);
}
'@
$tstType=Add-Type -name Test -MemberDefinition $code -PassThru
#$tstType::DisconnectSession("localhost", 2)
可以使用获取会话ID getProcesss
。要断开(而不是注销!)会话,请使用$tstType::DisconnectSession("localhost", 2)
。