Не удается найти путь '\LocalMachine\Personal', потому что он не существует

Я пытаюсь получить доступ к отпечаткам установленного сертификата в хранилищах 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>Server Certificate, я вижу, что есть два магазина WebHosting и Personal.

Я посмотрел документацию Microsoft, и в ней говорится, что есть WebHosting и Personal Store

Магазин веб-хостинга работает так же, как и личный магазин, поэтому все существующие инструменты для импорта и экспорта сертификатов работают одинаково. Ключевое различие между магазином веб-хостинга и персональным магазином заключается в том, что магазин веб-хостинга рассчитан на масштабирование до большего количества сертификатов.

Кто-нибудь может подсказать мне, почему Get-ChildItem -path Cert:\LocalMachine\Personal выдает ошибку?

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 }
}
Другие вопросы по тегам