我正在尝试访问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的商店。
我查看了microsoft documentation,并指出,这意味着有WebHosting和个人商店
虚拟主机商店的工作方式类似于个人商店,因此所有 现有的导入和导出证书的工具的工作方式相同。 虚拟主机商店和个人商店之间的主要区别是 该虚拟主机商店旨在扩展到更多 证书。
有人可以建议我为什么Get-ChildItem -path Cert:\LocalMachine\Personal
抛出错误吗?
答案 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 }
}