Niedawno przebudowałem moją infrastrukturę PKI i chciałbym usunąć certyfikaty wydane wszystkim komputerom klienckim w mojej sieci. Brzmi jak praca dla PowerShell! Napisałem więc ten skrypt do dystrybucji przez GPO, uruchomiłem z SysVol i uruchomiłem na komputerach klienckich podczas uruchamiania:
set-location cert:\LocalMachine\My
$certname = $env:COMPUTERNAME + ".domain.com"
get-item * | %{
if($_.issuer -like "CN=IssuingCA*" -and $_.DnsNameList.unicode -like $certname) { remove-item .\$_.Thumbprint -Force }
}
Z wiersza polecenia z podwyższonym poziomem uprawnień:
- Kiedy Ran, skrypt nie daje danych wyjściowych (po prostu nowa linia terminala). Nie zwraca żadnych błędów, a certyfikat nie jest usuwany.
- Gdy argument
-WhatIf
zostanie dodany doRemove-Item
polecenia w skrypcie, ponownie nie będzie żadnych błędów, a certyfikat nie zostanie usunięty. - Po uruchomieniu elementu Usuń. \ CERTIFICATE-THUMBPRINT -Force certyfikat jest usuwany.
Czy to problem z uprawnieniami? Czy istnieje mądrzejszy / prostszy sposób to zrobić?
Dzięki!
remove-item -whatif
?write-host
aby zrzucić coś na ekranie, jeśli warunek jest prawdziwy. Zastanawiam się, czy skrypt ocenia jako fałszywy (wyjaśniałby brak błędu i brak działania).Remove-Item -Force
?Odpowiedzi:
Moja odpowiedź brzmi: „Czy istnieje mądrzejszy / prostszy sposób to zrobić?” część twojego pytania. Skryptowi udało mi się usunąć certyfikat go tatusia
Dodałem
-WhatIf
tak, aby ten kod nie był niebezpieczny dla folx „copy \ paste \ run”. Teraz trzeba dostosować$Path
,Where-Object
i dodać$certname
zmienną, ale powyższy szablon powinien mieć idziesz.źródło
Chociaż nie udało mi się rozwiązać problemu ze skryptem, udało mi się znaleźć „mądrzejszy / prostszy” sposób na osiągnięcie mojego celu .
Z urzędu certyfikacji:
Certificate Templates
i wybierzManage
Reenroll All Certificate Holders
Zwiększy to numer wersji szablonu, a systemy sieciowe z automatyczną rejestracją usuną stary certyfikat i zarejestrują się z nowym certyfikatem.
Chociaż wymaga to automatycznej rejestracji dla konkretnego szablonu, nad którym pracuję, najlepszym rozwiązaniem byłoby rozwiązanie opublikowanego skryptu.
źródło