Powershell Uzaktan PKI Sertifikalarını Sil


9

Yakın zamanda PKI'mı yeniden oluşturdum ve ağımdaki tüm istemci makinelere verilen sertifikaları silmek istiyorum. Powershell için bir iş gibi geliyor! Bu komut dosyasını GPO tarafından dağıtılacak, SysVol'dan çalıştırılacak ve başlangıçta istemci makinelerde tetiklenecek şekilde yazdım:

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

Yükseltilmiş bir komut isteminden:

  • Ran olduğunda, komut dosyası çıktı vermez (sadece yeni bir terminal satırı). Hiçbir hata döndürmez ve Sertifika silinmez.
  • Argüman komut dosyasındaki komuta -WhatIfeklendiğinde Remove-Item, yine hata olmaz ve Sertifika silinmez.
  • Remove-Item. \ CERTIFICATE-THUMBPRINT -Force çalıştırıldığında, sertifika silinir.

Bu bir izin sorunu mu? Bunu yapmanın daha akıllı / basit bir yolu var mı?

Teşekkürler!


1
denedin remove-item -whatifmi ??
MDMoore313

@BigHomie. Evet, denedim. Bu bilgileri bir düzenlemede kaldırmışım gibi görünüyor ...
Byron C.

1
Koşullu kod bloğunuza, write-hostkoşul doğruysa ekrana bir şey dökmek için a ekleyin . Ben komut dosyası yanlış olarak değerlendiriyor, merak ediyorum (hiçbir hata ve hiçbir eylem açıklar).
Colyn1337

@ Colyn1337 Evet. Doğru değerlendiriyor.
Byron C.

@ByronC. Kod bloğu adil ise ne olur Remove-Item -Force?
Colyn1337

Yanıtlar:


6

Cevabım "Bunu yapmanın daha akıllı / basit bir yolu var mı?" sorunuzun bir parçası. Bu senaryo benim için git baba sertifikası kaldırmada başarılı oldu

$Path = 'Cert:\LocalMachine\AuthRoot\'
$CertList = @()

$CertList = Get-ChildItem -Path $Path | Where-Object {$_.Issuer -like "CN=GO*"}

foreach($Cert in $CertList){
    remove-item "$($Path)$($Cert.Thumbprint)" -Force -WhatIf
}

-WhatIfBu kodu "copy \ paste \ run" folx için tehlikeli olmayacak şekilde ekledim . Şimdi, uyarlamak gerekir $Path, Where-Objectve eklemek $certnamedeğişkeni, ancak yukarıdaki şablon gidiş olmalıdır.


3

Sorunu senaryo ile çözememiş olmama rağmen, hedefime ulaşmak için 'Daha Akıllı / Daha Basit' bir yol bulabildim .

Sertifika Yetkilisinden:

  • Rt-Click Certificate Templatesve seçinManage
  • Değiştirmek istediğiniz Sertifika Şablonunu Rt-tıklatın ve seçin Reenroll All Certificate Holders

Bu, şablonun Sürüm numarasını artıracak ve otomatik kaydı olan ağ sistemleri eski sertifikayı silecek ve yeni sertifikaya kaydedecektir.

Bu, birlikte çalıştığım şablon için otomatik kayıt gerektirse de, yayınlanan komut dosyasına bir çözüm tercih edilebilir bir yanıt olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.