トップ回答者
PowerShellで証明書を削除しようとした際に表示される確認メッセージを非表示にする方法について

質問
-
PowerShellの初心者です。
「信頼されたルート証明機関」に登録されている証明書を、バッチまたはPowerShellでサイレントで削除したいと考えております。
最初にバッチファイルにて
certutil -delstore -user ROOT "証明書のシリアル番号"
を実行してみたところ、下記のダイアログが表示されます。
----------------------------------------------------
ルート証明書ストア
----------------------------------------------------
次の証明書をルートストアから削除しますか?
サブジェクト:
発行者:
有効期間:
シリアル番号:
拇印 (sha 1) :
拇印 (md5) :
----------------------------------------------------
[はい(Y)][いいえ(N)]
----------------------------------------------------また、PowerShellにて
dir Cert:\CurrentUser\root | where Subject -like "*example.net*" | del
を実行してみましたが、同様にダイアログが表示されます。そこで、上記ダイアログを非表示、またはダイアログが表示されたら
自動で[Y]を入力し、サイレントで証明書を削除する方法がありましたら、
ご教示いただけると助かります。基本的な質問で恐縮ですが、よろしくお願いいたします。
回答
-
何とか自己解決できました。
nircmdコマンドで[Y]が自動入力されるタイミングが早すぎるのではないか?と考え、certutilコマンドを実行してから3秒後に[Y]を入力するよう、下記のコマンドで試してみたところ、うまくいきました。
certutil -delstore -user ROOT " 証明書のシリアル番号" | nircmdc.exe elevatecmd cmdwait 3000 dlg "CertUtil.exe" "" click yes
- 回答の候補に設定 チャブーンMVP 2019年5月13日 1:28
- 回答としてマーク Haruka6002Microsoft contingent staff, Moderator 2019年10月23日 2:58
すべての返信
-
チャブーンです。
この件ですが、PowerShellで「Del」を使っていますが、これは「Remove-Item」コマンドレットのエイリアスです。
うまくいくかはわかりませんが、Remove-Itemの-Forceオプションを使ってみてはどうでしょうか。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
-
チャブーン様
ご回答ありがとうございます。
早速、Remove-Itemの-Forceオプションで試してみましたが、うまくいきませんでした。
Powershellではなく、「certutil -delstore」コマンドでも何とかできないか調べていたところ、
下記サイトの「NirCmd」コマンドを見つけました。
http://www.nirsoft.net/utils/nircmd.html
試しに、下記のコマンドを実行してみたところ、表示されたダイアログ画面で[Y]が自動入力され、うまくいきました。
certutil -delstore -user ROOT " 証明書のシリアル番号" | nircmdc.exe elevatecmd dlg "CertUtil.exe" "" click yes
とりあえずバッチでは何とかクリアできたのですが、新たな問題が出てきました。Sysprepを実行したマスターPCからイメージ展開したPCにて、Administratorで自動ログオン後、上記バッチを実行するとダイアログ画面で[Y]が自動入力されません。
一度、[N]で処理をキャンセルしてダイアログ画面が閉じた状態で再度バッチを実行すると、今度はダイアログ画面で正常に[Y]が自動入力されます。
初回のバッチ実行時だけがうまくいかず、二回目の実行でうまくいく原因がわからず困っています。
これだけの情報だけではわかりづらいとは思いますが、何か考えられる原因はありますでしょうか。
- 編集済み nori3ichan 2019年4月16日 2:17
-
何とか自己解決できました。
nircmdコマンドで[Y]が自動入力されるタイミングが早すぎるのではないか?と考え、certutilコマンドを実行してから3秒後に[Y]を入力するよう、下記のコマンドで試してみたところ、うまくいきました。
certutil -delstore -user ROOT " 証明書のシリアル番号" | nircmdc.exe elevatecmd cmdwait 3000 dlg "CertUtil.exe" "" click yes
- 回答の候補に設定 チャブーンMVP 2019年5月13日 1:28
- 回答としてマーク Haruka6002Microsoft contingent staff, Moderator 2019年10月23日 2:58