Не удается найти путь '\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 }
}