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!
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
?
remove-item -whatif
?