创建PowerShell脚本以自动续订用户证书

时间:2019-08-09 17:57:24

标签: powershell windows-10 certificate

我们使用用户证书对各种服务进行身份验证,但是除非手动更新,否则证书将在一年后过期。我正在尝试创建一个登录脚本,该脚本将检测证书是否即将过期并主动对其进行续订。

我们当前使用的手动过程是让用户登录,启动certmgr.msc,展开“个人”>“证书”,右键单击该证书,“所有任务”>“使用新密钥续订证书”(如果已过期,则请求“新证书”)。

    cd cert:\
    $certs = Get-ChildItem -Recurse -ExpiringInDays 180 | Where subject -Like "*(foo)*"
    if ($certs)
    {
        ForEach ($cert in $certs)
        {
            certreq -enroll -user -q -policyserver * $cert.thumbprint renew
        }
    }

我成功运行了一次,但是运行脚本时出现以下错误:

  

证书请求处理器:参数不正确。 0x80070057   (WIN32:87 ERROR_INVALID_PARAMATER)

如果输入垃圾数据或通过序列号或指纹识别证书,我将得到相同的结果。该脚本能够可靠地找到我想要的证书,但是certreq命令失败。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

-证书参数丢失

Get-ChildItem cert:\ -Recurse -ExpiringInDays 180 | Where subject -Like "*(foo)*" | % {
   certreq -enroll -user -q -policyserver * -cert $($_.thumbprint) renew
}