Powershell दूर से PKI प्रमाणपत्र हटाएं


9

मैंने हाल ही में अपने पीकेआई का पुनर्निर्माण किया है और मैं अपने नेटवर्क के सभी क्लाइंट मशीनों को जारी किए गए प्रमाणपत्रों को हटाना चाहूंगा। Powershell के लिए एक नौकरी की तरह लगता है! इसलिए मैंने इस स्क्रिप्ट को GPO द्वारा वितरित किया जाना लिखा, SysVol से चला, और स्टार्टअप पर क्लाइंट मशीनों पर ट्रिगर किया गया:

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

एक उन्नत कमांड प्रॉम्प्ट से:

  • जब रैन, स्क्रिप्ट कोई आउटपुट नहीं देता है (बस एक नई टर्मिनल लाइन)। यह कोई त्रुटि नहीं देता है और प्रमाणपत्र नष्ट नहीं किया जाता है।
  • जब तर्क -WhatIfको Remove-Itemस्क्रिप्ट में कमांड में जोड़ा जाता है , तो फिर से कोई त्रुटि नहीं होती है और प्रमाणपत्र को हटा नहीं दिया जाता है।
  • जब निकालें-आइटम। \ CERTIFICATE-THUMBPRINT -Force चलाया जाता है, तो प्रमाणपत्र हटा दिया जाता है।

क्या यह एक अनुमति मुद्दा है? क्या ऐसा करने का कोई चालाक / सरल तरीका है?

धन्यवाद!


1
क्या आपने कोशिश की remove-item -whatif??
एमडीओमोर 313

@BigHomie। हां, मैंने कोशिश की। मुझे लगता है कि एक संपादन में उस जानकारी को हटा दिया गया है ...
बायरन सी।

1
अपने सशर्त कोडब्लॉक में, write-hostयदि स्थिति सही है, तो स्क्रीन पर कुछ डंप करने के लिए जोड़ें । मैं सोच रहा था कि क्या स्क्रिप्ट गलत के रूप में मूल्यांकन कर रही है (कोई त्रुटि और कोई कार्रवाई नहीं समझाएगा)।
Colyn1337

@ Colyn1337 हां। यह सच का मूल्यांकन कर रहा है।
बायरन सी।

@ByronC। अगर कोडब्लॉक सिर्फ होता है तो क्या होता है Remove-Item -Force?
Colyn1337

जवाबों:


6

मेरा जवाब "क्या ऐसा करने का कोई स्मार्ट / सरल तरीका है?" आपके सवाल का हिस्सा है। यह स्क्रिप्ट मेरे लिए एक गो डैडी सर्टिफिकेट निकालने में सफल रही

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

मैंने -WhatIfइसलिए जोड़ा कि यह कोड "कॉपी \ पेस्ट \ रन" फॉक्स के लिए खतरनाक नहीं था। अब, आपको चर को अनुकूलित करना होगा $Path, Where-Objectऔर $certnameवैरिएबल जोड़ना होगा , लेकिन उपरोक्त टेम्पलेट आपके पास होना चाहिए।


3

हालाँकि मैं स्क्रिप्ट के साथ समस्या को हल करने में सक्षम नहीं हूं , फिर भी मैं अपने लक्ष्य को प्राप्त करने के लिए एक 'स्मार्टर / सिंपल' तरीका खोजने में सक्षम था

प्रमाणपत्र प्राधिकरण से:

  • Rt- क्लिक करें Certificate Templatesऔर चुनेंManage
  • Rt-क्लिक करें सर्टिफिकेट टेम्पलेट जिसे आप बदलना चाहते हैं और चुनें Reenroll All Certificate Holders

यह ऑटो-एनरोल के साथ टेम्प्लेट और नेटवर्क सिस्टम के संस्करण संख्या में वृद्धि करेगा और पुराने प्रमाणपत्र को हटा देगा और नए प्रमाणपत्र के साथ नामांकन करेगा।

यद्यपि इसके लिए मैं जिस विशिष्ट टेम्पलेट के साथ काम कर रहा हूं, उसके लिए ऑटो-नामांकन की आवश्यकता होती है, पोस्ट की गई स्क्रिप्ट का समाधान एक बेहतर जवाब होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.