Я не ожидаю ответа, но я надеюсь на направление.

Иногда PowerShell ISE, кажется, просто ведет себя странно. Странность, кажется, возникла из ниоткуда. Я не нашел способ воспроизвести поведение.

Три дня назад я писал код, который работал на диске CERT:\, и Intellisense показывал мне параметры для поставщика файловой системы (-File и -Directory) вместо поставщика сертификатов (-ExpiringInDays).

Сегодня этот код вызвал исключение.

Invoke-Command -ComputerName OneServer -Credential $admin `
    -ScriptBlock {Get-ChildItem -Path CERT:\ -Recurse -ExpiringInDays 366}
The system cannot open the device or file specified
    + CategoryInfo          : NotSpecified: (:) [Get-ChildItem], Win32Exception
    + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.GetChildItemCommand
    + PSComputerName        : oneserver

Запуск этого фрагмента на моем локальном компьютере в том же сеансе PowerShell вызвал то же исключение.

Get-ChildItem -Path CERT:\ -Recurse -ExpiringInDays 366

То же исключение для CERT: CERT:\ и CERT:\* .

Если я углубился на один каталог, используя -Path CERT:\LocalMachine , он работал без возникновения исключения, но возвращал сертификаты, срок действия которых истекает через несколько лет (более 366 дней).

Я переключился на другой сеанс PowerShell, вставил оба фрагмента, и оба работали нормально. Переменная $admin установлена правильно в обеих сессиях. Мне кажется, это указывает на то, что что-то идет не так в среде исполнения. Но чуть выше Invoke-Command и локальная команда выдают одну и ту же ошибку. Я не понимаю этого.

Журналы событий PowerShell (в Microsoft/Windows/PowerShell/Operational) не показывают ошибку для этого исключения, но они показывают ошибку "Доступ запрещен", связанный с Invoke-Command.

WSMan reported an error with error code: 5. 
 Error message: Connecting to remote server oneserver failed with the following error message : Access is denied. 

Я думаю, что это связано со средой исполнения. Выполнение идентичного кода в другом сеансе PowerShell работало нормально.

Другие вещи, которые могут иметь отношение

  • Я отключаюсь, выхожу или перезагружаюсь только тогда, когда Windows заставляет меня это делать.
  • У меня обычно открыто несколько окон PowerShell ISE. Они могут оставаться открытыми в течение нескольких дней. За это время они работают нормально. (Но я действительно знаю?)
  • Иногда код без переменных завершится сбоем или выдаст странный вывод в одном окне, но будет работать как положено в другом. Я не всегда замечаю, что результат странный. (PowerShell говорит мне, что срок действия сертификатов истекает до 2020 года. Это правильно или это странно? Я не всегда знаю.)
  • Странное поведение IntelliSense (выше).
  • Юнит-тесты Pester запускаются против всего моего производственного кода каждый раз, когда я открываю ISE. Однажды, куча из них потерпит неудачу. Если я запускаю их снова вручную, они успешны. Откройте новое окно ISE, и они преуспеют.

Как я могу изолировать такого рода проблемы?

PS > $PSVersionTable

Name                           Value                                                                                                                                                                                               
----                           -----                                                                                                                                                                                               
PSVersion                      5.1.15063.413                                                                                                                                                                                       
PSEdition                      Desktop                                                                                                                                                                                             
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                                             
BuildVersion                   10.0.15063.413                                                                                                                                                                                      
CLRVersion                     4.0.30319.42000                                                                                                                                                                                     
WSManStackVersion              3.0                                                                                                                                                                                                 
PSRemotingProtocolVersion      2.3                                                                                                                                                                                                 
SerializationVersion           1.1.0.

Удаленные серверы похожи: автоматические задания ежедневно запускают сценарии Invoke-Command для всех наших производственных серверов без ошибок. Наверное. Может быть.

0