Ошибка PowerShell при попытке чтения хранилища сертификатов с указанным сетевым ресурсом или устройством больше недоступно

Я пытался найти определенный сертификат на своей машине и столкнулся со странной проблемой. Я видел The specified network resource or device is no longer available ошибок при вызове:

Get-ChildItem -Path "XXXXX" -Recurse 

Где "XXXX" был отпечатком сертификата, который я искал.

Чтобы попытаться сузить проблему, я начал с удаления отпечатка моей команды (т. е. вызова Get-ChildItem -Recurse) и обнаружил, что сценарий не работает при попытке чтения из хранилища сертификатов UserDS (см. сокращенный скриншот вывода ниже):

‹code›Get-ChildItem -Recurse‹/code› вывод

Затем я попытался cd войти в хранилище сертификатов UserDS, чтобы посмотреть, позволит ли оно мне вообще, и посмотреть, смогу ли я увидеть что-нибудь в этом месте. При попытке позвонить ls я получил ту же ошибку (см. ниже):

введите здесь описание изображения

Я не могу понять, что вызывает эту проблему или как ее исправить. Это блокирует меня при локальной установке клиентского решения, поэтому любая помощь или идеи очень ценятся. Спасибо!


person Zachary Kniebel    schedule 19.07.2019    source источник
comment
Посмотрите на раздел реестра Computer\HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\UserDS. Существует ли ист? У вас есть разрешение на чтение?   -  person Daniel Fisher lennybacon    schedule 25.07.2019
comment
@DanielFisherlennybacon, да, реестр все еще существует, и у меня есть разрешение на его чтение. С этой целью, я знаю, что вырезал его на снимке экрана, но я также запускал эти сценарии в качестве администратора в сеансе PowerShell с повышенными правами.   -  person Zachary Kniebel    schedule 26.07.2019
comment
Попробуйте Get-ChildItem -Path 'Cert:\CurrentUser\UserDS' -Name. Если это не сработает, попробуйте Get-ChildItem -Path 'Cert:\CurrentUser\UserDS' -Name | ForEach-Object { Write-Host "$($_.Name)" ; try { Get-Item -Path "Cert:\CurrentUser\UserDS\$($_)" -ErrorAction Stop } catch { Write-Host "^Problem here!" -f Yellow } }. Вы получите отпечаток сертификата, вызывающего проблему. Затем вы можете посмотреть его ближе в certmgr.msc или посмотреть системные события, используя ProcMon, получая cert:\CurrentUser\UserDS\<THUMBPRINT>   -  person filimonic    schedule 28.07.2019
comment
Другой SO упоминает исключения в UserDS stackoverflow .com/questions/45116450/   -  person Daniel Fisher lennybacon    schedule 30.07.2019


Ответы (1)


В хранилище UserDS (или Active Directory User Object в certmgr.msc) отображаются хранящиеся в активном каталоге сертификаты пользователя (см. здесь, здесь, здесь и здесь).

Сообщение об ошибке 0x80070037 (the specified network resource or device is no longer available) появляется, когда локальное устройство (например, флешка недоступна) или сетевое соединение прерывается при доступе к ресурсу.

Хранилище имеет ключ в реестре Windows (Computer\HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\UserDS) и сохраняет информацию о сертификатах, которые читаются из активного директора.

Я вижу два варианта:

  • Информация в реестре повреждена
  • у вас проблемы с доступом к активному каталогу

Если вы хотите обработать ошибку при вызове Get-ChildItem, посмотрите этот сообщение SO

person Daniel Fisher lennybacon    schedule 30.07.2019