Моя среда выполнения PowerShell слегка повреждена?
Я не ожидаю ответа, но я надеюсь на направление.
Иногда PowerShell ISE, кажется, просто ведет себя странно. Странность, кажется, возникла из ниоткуда. Я не нашел способ воспроизвести поведение.
Три дня назад я писал код, который работал на диске CERT: \, и Intellisense показывал мне параметры для поставщика файловой системы ( -File
и -Directory
) вместо поставщика сертификатов ( -ExpiringInDays
).
Сегодня этот код вызвал исключение.
Invoke-Command -ComputerName OneServer -Credential $admin ` -ScriptBlock
Система не может открыть указанное устройство или файл + CategoryInfo: NotSpecified: (:) [Get-ChildItem], Win32Exception + FullyQualifiedErrorId: System.ComponentModel.Win32Exception, Microsoft.PowerShell.Commands.GetChildItemCommand + PSComputerName: один сервер
Запуск этого фрагмента на моем локальном компьютере в том же сеансе 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 сообщил об ошибке с кодом ошибки: 5. Сообщение об ошибке: Не удалось подключиться к удаленному серверу oneserver со следующим сообщением об ошибке: Доступ запрещен.
Я думаю, что это связано со средой исполнения. Выполнение идентичного кода в другом сеансе PowerShell работало нормально.
Другие вещи, которые могут иметь отношение
- Я отключаюсь, выхожу или перезагружаюсь только тогда, когда Windows заставляет меня это делать.
- У меня обычно открыто несколько окон PowerShell ISE. Они могут оставаться открытыми в течение нескольких дней. За это время они работают нормально. (Но я действительно знаю?)
- Иногда код без переменных завершится сбоем или выдаст странный вывод в одном окне, но будет работать как положено в другом. Я не всегда замечаю, что результат странный. (PowerShell сообщает мне, что срок действия сертификатов не истечет до 2020 года. Это правда или странно? Я не всегда знаю.)
- Странное поведение IntelliSense (выше).
- Юнит-тесты Pester запускаются против всего моего производственного кода каждый раз, когда я открываю ISE. Однажды, куча из них потерпит неудачу. Если я запускаю их снова вручную, они успешны. Откройте новое окно ISE, и они преуспеют.
Как я могу изолировать такого рода проблемы?
PS> $ PSVersionTable Имя Значение ---- ----- PSVersion 5.1.15063.413 PSEdition Desktop PSCompatibleVersions BuildVersion 10.0.15063.413 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 Версия Serialization 1.1.0.
Удаленные серверы похожи: автоматические задания ежедневно запускают сценарии Invoke-Command для всех наших производственных серверов без ошибок. Наверное. Может быть.
0 ответов на вопрос
Похожие вопросы
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
5
Отключение звукового сигнала окна cmd
-
3
Powershell пинг до бесконечности
-
-
5
Сочетание клавиш для вставки в командной строке Windows
-
5
Какие преимущества может получить средний гик от Powershell?
-
1
Powershell: выполнить операцию для всех файлов в каталоге (foreach)
-
1
Выделение Powershell / CMD для копирования правой кнопкой мыши в Vista
-
3
Что такое Windows PowerShell?
-
5
Как сделать скрипт Powershell (или другой) для изменения разрешения экрана?
-
5
Получить текущий UNC-путь из локального пути в powershell