找不到路径“ \ LocalMachine \ Personal”,因为它不存在

时间:2020-06-29 17:53:19

标签: powershell iis certificate-store

我正在尝试访问IIS 10存储上已安装证书的指纹。我正在使用以下命令

Get-ChildItem -path Cert:\LocalMachine\Personal

但是上面的命令给了我以下错误

PS C:\Users\Administrator> Get-ChildItem -path Cert:\LocalMachine\Personal
Get-ChildItem : Cannot find path '\LocalMachine\Personal' because it does not exist.
At line:1 char:1
+ Get-ChildItem -path Cert:\LocalMachine\Personal
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (\LocalMachine\Personal:String) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

但是,以下命令返回有效的指纹

Get-ChildItem -path Cert:\LocalMachine\WebHosting

有趣的是,当我进入IIS>“服务器证书”时,可以看到有两个存储WebHosting和Personal的商店。

enter image description here

我查看了microsoft documentation,并指出,这意味着有WebHosting和个人商店

虚拟主机商店的工作方式类似于个人商店,因此所有 现有的导入和导出证书的工具的工作方式相同。 虚拟主机商店和个人商店之间的主要区别是 该虚拟主机商店旨在扩展到更多 证书。

有人可以建议我为什么Get-ChildItem -path Cert:\LocalMachine\Personal抛出错误吗?

1 个答案:

答案 0 :(得分:1)

Personal是MMC中的逻辑存储名称。在PowerShell PSDrive中,商店名称为My

Get-ChildItem -path Cert:\LocalMachine\My

我不能说为什么这有所不同。但是,您可以在Windows系统上运行以下命令,以发现其他命名差异:

certutil -enumstore

您可以进一步执行上述命令,并创建自己的命名不匹配映射:

(certutil -enumstore) -match '"[^"]+"' | Foreach-Object { 
    $PSStore,$MMCStore = ($_ -split '("[^"]+")').Trim(' ','"')[0,1]
    [pscustomobject]@{ 'PSStore' = $PSStore; 'MMCStore' = $MMCStore }
}