![当用户会话断开连接时使用 Quser(powershell)](https://linux22.com/image/759488/%E5%BD%93%E7%94%A8%E6%88%B7%E4%BC%9A%E8%AF%9D%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5%E6%97%B6%E4%BD%BF%E7%94%A8%20Quser%EF%BC%88powershell%EF%BC%89.png)
这里有一篇很棒的文章,介绍了如何使用 quser 查找服务器上的登录用户,然后在我们选择的情况下注销他们。如果他们有一个具有命名会话的活动登录,那就太好了。但是,如果会话处于断开连接(Disconnected)(Disc),它就不起作用,因为它没有会话名称。当它没有会话名称时,所有内容都会上移。例如,这是我的代码:
$connectionName = "MyServerHere"
$quserResult = quser /server:$connectionName 2>&1
$quserRegex = $quserResult | ForEach-Object -Process { $_ -replace '\s{2,}',',' }
$quserObject = $quserRegex | ConvertFrom-Csv
$quserObject
如果服务器有活动登录,我的结果是这样的:
用户名:myEmpId 会话名称:coolsessionname ID:2 状态:磁盘 空闲时间:54 登录时间:2020 年 11 月 3 日晚上 9:39
但如果断开连接,结果将是这样的:
用户名 : myEmpId 会话名称 : 2 ID : Disc 状态 : 54 空闲时间 : 2020 年 11 月 3 日晚上 9:39 登录时间 :
当我尝试这样做时,这会导致问题:
logoff $quserObject.ID /server:$connectionName
我实际上甚至不需要 sessionname,但我想不出一种方法来将其从初始 quser 中移除,这将是最简单的方法。有人有什么想法吗?