Создание скрипта для удаления только общих учетных данных при перезагрузке

У меня есть проблема, из-за которой наши пользователи блокируют свои учетные записи AD из-за сохраненных общих учетных данных (GC). Проблема решается удалением GC, но они возвращаются, когда пользователи входят в систему на новом компьютере.

Я могу найти кучу информации об удалении всех сохраненных учетных данных, кроме GC, но это противоположно тому, что мне нужно, и другие учетные данные должны остаться без изменений.

Я сгенерировал командный файл, но он будет удалять только "базовые" компьютерные графы, которые не имеют специальных символов. Я подозреваю, что команда cmdkey / delete не может работать со сложными именами. т.е. LegacyGeneric:target=Microsoft_OC1:uri=Joe.Bloggs@example.com.au: сертификат:OCS:1

Пакетный файл,

cmdkey.exe / list> "% TEMP% \ List.txt"
findstr.exe LegacyGeneric "% TEMP% \ List.txt"> "% TEMP% \ tokensonly.txt"
FOR / F "токены = 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 был бы лучше, но я открыт для других языков.

Я уверен, что должен быть скрипт, способный обработать этот запрос, но я попал в стену знаний.

Любая помощь будет оценена.

Ура, Тим

0 ответов

Надеюсь, это поможет! Он удалит общие учетные данные Windows с помощью powershell.

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

Сценарий работает для меня, объединяя темы выше. Мне особенно пришлось удалить старые записи OUTLOOK и успешно запустить этот скрипт в контексте пользователя. Помните, что ПОЛИТИКА ВЫПОЛНЕНИЯ должна быть установлена ​​в другом административном сценарии, поскольку он выполняется в контексте пользователя.

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

Другие вопросы по тегам