0

我是stackoverflow的新用户,所以提前感谢您的帮助!这是我的场景:

  • Windows 7 企业版 (x64)
  • 多个用户登录和退出
  • 需要在新用户登录时注销以前的用户

在我们当前的 Windows XP 环境中,我们有一个自定义的 Gina.dll,它会提示非管理员用户登录将引导前一个用户。这可以通过 Windows 7 中的“快速用户切换”来实现,但这会使应用程序的多个实例处于打开状态,这会导致问题。我们还担心多个用户会导致性能下降。在我的研究中,我发现很可能需要一个凭证提供者,但由于时间限制,我认为我们不能及时建立一个。

我已经成功创建了一个 powershell 脚本(在 stackoverflow 的帮助下!),它将注销以前的用户,它看起来像这样:

$pc = qwinsta | select-string "Disc" | select-string -notmatch "services"

$pc = $pc -replace "[^\d]",""

logoff $pc

这样做的问题是,如果用户名包含一个数字,例如 username1 或 user2,此脚本会连接这些数字,然后它会失败。你能帮我编辑这个小的 powershell 脚本,以便它选择“光盘”会话的会话 ID 并注销吗?

进一步的测试结果:

  • 如果没有“光盘”用户,它会注销当前登录的用户。这不好,还有什么帮助吗?
4

1 回答 1

0

你可以试试这个:

$pc = qwinsta | select-string "Disc" | select-string -notmatch "services"

if ($pc)
{
  $pc = ($pc.tostring() -split ' +')[2]    
  logoff $pc
}

通过这种方式,您可以注销每个断开连接的会话:

$pc = qwinsta | select-string "Disc" | select-string -notmatch "services"

if ($pc)
{
  $pc| % { 

  logoff ($_.tostring() -split ' +')[2]

  }
}
于 2012-12-04T19:29:00.337 回答