当用户会话断开连接时使用 Quser(powershell)

当用户会话断开连接时使用 Quser(powershell)

这里有一篇很棒的文章,介绍了如何使用 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 中移除,这将是最简单的方法。有人有什么想法吗?

相关内容