我正在尝试通过PowerShell更新(根)证书的友好名称。
我正在尝试更新的证书在下面的屏幕截图中突出显示(取自certmgr.msc
):
以下是PowerShell代码(主要取自here):
Set-Location cert:
cd .\CurrentUser\Root
$cert = gci .\02FAF3E291435468607857694DF5E45B68851868
$cert.FriendlyName = "UserTrust CA"
(我已经使用certmgr.msc中的证书属性验证了指纹,以确保它是相同的证书)。
最后一行会导致以下错误:
Exception setting "FriendlyName": "Access is denied.
"
At line:1 char:7
+ $cert. <<<< FriendlyName = "UserTrust CA"
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
到目前为止,我已尝试过以下内容:
Set-ExecutionPolicy Unrestricted
其他信息:
PS版输出:
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
答案 0 :(得分:3)
您需要将您的Powershell版本更新为3.0
或4.0
。
见Get-ChildItem for Certificate
我有Powershell 4.0,我能够毫无问题地更改FriendlyName。这在重新启动后certmgr.msc
中可见。
您可以下载Powershell 4.0 here。
如果您是Powershell初学者,最好使用Get-ChildItem
而不是gci
来提高可读性。此外,cd
是Set-Location
的别名,因此最好在脚本中选择一个或另一个以避免混淆。