【问题标题】:Creation of a script to remove only Generic Credentials on restart创建脚本以在重新启动时仅删除通用凭据
【发布时间】:2016-08-04 00:28:47
【问题描述】:

我遇到了一个问题,即我们的用户的 AD 帐户由于存储的通用凭据 (GC) 而被锁定。通过删除 GC 解决了问题,但是当用户登录到新机器时它们会返回。

我可以找到关于删除除 GC 之外的所有存储凭据的大量信息,但这与我需要的相反,其他凭据必须保持不变。

我已经生成了一个批处理文件,但它只会删除没有任何特殊字符的“基本”CG。我怀疑命令 cmdkey /delete 无法处理复杂的名称。即 LegacyGeneric:target=Microsoft_OC1:uri=Joe.Bloggs@example.com.au:certificate:OCS:1

批处理文件,

cmdkey.exe /list > "%TEMP%\List.txt"
findstr.exe LegacyGeneric "%TEMP%\List.txt" > "%TEMP%\tokensonly.txt"
FOR /F "tokens=1,2 delims=" %a IN (%TEMP%\tokensonly.txt) DO cmdkey.exe /delete:%b
del "%TEMP%\List.txt" /s /f /q
del "%TEMP%\tokensonly.txt" /s /f /q

当我们的应用程序白名单在 2 周后上线时,我在获取批处理文件时也会遇到问题。所以 PowerShell 脚本会更好,但我对其他语言持开放态度。

我确信一定有一个脚本能够处理这个请求,但我遇到了知识墙。

我们将不胜感激。

干杯, 蒂姆

【问题讨论】:

  • 我从未尝试过,但是在 PowerShell 中 cmdkey /list | where {$_ -match 'LegacyGeneric'} | foreach { cmdkey /delete "$($_.split()[-1])" } 怎么样?
  • 这在我的机器上效果很好,谢谢。我现在必须在从服务器推送的用户级别进行测试。

标签: windows powershell active-directory credentials credential-manager


【解决方案1】:

希望这会有所帮助!它将通过 powershell 删除 Windows 通用凭据

$key_dat =@((cmdkey /listall | Where-Object{$_ -like "*LegacyGeneric*"}).replace("Target: ",""))
for($k =0; $k -le ($key_dat.Count -1); $k++)
{
[string]$dele_data =$key_dat[$k].trim()
cmdkey /delete:$dele_data
}

【讨论】:

  • 当您尝试删除所有条目时,语法:cmdkey /delete:targetname 不起作用。
【解决方案2】:

该脚本适用于我结合上面的线程。 我尤其不得不删除旧的 OUTLOOK 条目并在用户上下文中成功运行此脚本。 请记住,EXECUTION POLICY 必须在另一个管理脚本中设置,因为它在用户上下文中运行。

$key_dat = @((cmdkey /listall | Where-Object{$_ -like "*LegacyGeneric:target=MS.Outlook*"}).replace("Target: ",""))
for($k =0; $k -le ($key_dat.Count -1); $k++)
{
[string]$dele_data =$key_dat[$k].split()[-1]
cmdkey /delete:$dele_data
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多