我正在尝试使用 PowerShell 的 WMI 查询来识别已记录的会话:
$logon_sess = @(gwmi win32_logonsession -ComputerName $computername)
但我发现这个命令还报告了较旧的会话,这些会话是否仍处于活动状态?我该如何重置它?
当我将结果与“查询用户”命令进行比较时,我看到不同的结果,因为“查询用户”命令仅返回当前会话。
那么,如何使用 WMI Win32_LogonSession 方法获取现有会话的真实结果?
答案1
你观察到这种行为是因为Microsoft 安全公告 MS16-111包含一个更新,该更新改变了 Windows 处理登录会话对象的方式。现在,任何泄漏访问令牌的服务或应用程序(无论是 Microsoft 还是第三方)现在也会泄漏登录会话对象。
每次用户注销系统时,您都会泄漏登录会话对象,并且您对此无能为力,只能让您的服务或应用程序供应商修复其代码以使其不再泄漏令牌。