Powershell Windows 7凭据提供程序或登录解决方案

Powershell Windows 7凭据提供程序或登录解决方案,powershell,windows-7,credentials,logoff,credential-providers,Powershell,Windows 7,Credentials,Logoff,Credential Providers,我是stackoverflow的新用户,因此提前感谢您的帮助!这是我的场景: Windows 7企业版(x64) 多个用户登录和注销 需要在新用户登录时注销以前的用户 在我们当前的Windows XP环境中,我们有一个自定义的Gina.dll,它会提示非管理员用户登录将引导前一个用户。这可以通过Windows7中的“快速用户切换”来实现,但这会导致多个应用程序实例打开,从而导致问题。我们还担心多个用户会导致性能下降。在我的研究中,我发现最有可能需要一个凭证提供者,但由于时间限制,我认为我们无

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

  • Windows 7企业版(x64)
  • 多个用户登录和注销
  • 需要在新用户登录时注销以前的用户
在我们当前的Windows XP环境中,我们有一个自定义的Gina.dll,它会提示非管理员用户登录将引导前一个用户。这可以通过Windows7中的“快速用户切换”来实现,但这会导致多个应用程序实例打开,从而导致问题。我们还担心多个用户会导致性能下降。在我的研究中,我发现最有可能需要一个凭证提供者,但由于时间限制,我认为我们无法及时建立一个凭证提供者

我已成功创建了一个powershell脚本(在stackoverflow的帮助下!),该脚本将注销以前的用户,如下所示:

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

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

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

进一步测试结果:

  • 如果没有“光盘”用户,它会注销当前登录的用户。这不好,有什么帮助吗
您可以尝试以下方法:

$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]

  }
}

另外,我们的计划是在每次登录时都以登录脚本的形式运行它。这会导致以下错误:找不到会话用户名谢谢!@ideq0立即重试。注销命令与用户名不兼容,这样我们就可以将会话传递给注销。经过测试,它工作正常。这非常有效!!!谢谢!现在我必须用证书对ps1文件进行签名才能获得它将在登录时自动启动。您是否看到任何与此相关的问题?谢谢!