Как проверить различия PSModulePath при прямом и промежуточном запуске PowerShell 7 и Windows PowerShell 5.1: снимки среды A→B→C без правки системных переменных.
Почему нужны две цепочки запуска
Microsoft объясняет, что переменные среды существуют в областях Machine, User и Process, а дочерний процесс наследует среду родительского процесса. Отдельная документация PSModulePath описывает, как PowerShell формирует путь поиска модулей при запуске и как поведение различается между Windows PowerShell и PowerShell 7. Поэтому одного снимка конечной оболочки недостаточно. Обозначьте A как исходный процесс, B как PowerShell 7, C как Windows PowerShell 5.1. Контрольная цепочка A→C сравнивается с A→B→C. Не запускайте тест из рабочей IDE или агента автоматизации: они могут добавлять собственные переменные и скрыть исходную границу.
Матрица A→C и A→B→C
Для каждой точки запишите версию оболочки, разрядность, область запуска и PSModulePath как упорядоченный список элементов. Не сохраняйте домашние каталоги дословно: замените пользовательскую часть пути нейтральной меткой, сохранив порядок и системные сегменты. Сначала выполните прямую цепочку A→C, затем из того же A запустите B и из него C. Если различие появляется уже в B, конечный C наследует иной процессный контекст. Если B совпадает с A, а меняется только C, граница относится к запуску Windows PowerShell. Не делайте вывод о несовместимости модуля только по пути: матрица показывает происхождение среды, а не успешность импорта конкретной версии.
Безопасный контроль без правки системы
Повторите обе цепочки в новой обычной сессии пользователя и меняйте только промежуточную оболочку. Не редактируйте Machine или User PSModulePath, не копируйте модули между каталогами и не переустанавливайте PowerShell: такие действия могут временно скрыть расхождение и затронуть другие приложения. Если нужен дополнительный контроль, задайте нейтральную процессную переменную только внутри одной тестовой сессии и закройте её после сравнения. Критерий остановки — любое действие с постоянной системной средой или производственным модулем. Если ошибка команды зависит от того, какая версия модуля выбрана, фиксируйте имя и версию, но не публикуйте внутренние пути и корпоративные имена.
Что передать рабочей группе
Приложите две короткие цепочки запуска, версии A, B и C, обезличенные списки PSModulePath и точку первого расхождения. Укажите, воспроизводится ли поведение в новой пользовательской сессии и присутствует ли тот же модуль в нескольких сегментах пути. Не включайте полный снимок среды: в нём могут быть токены, адреса сервисов и другие секреты. Свежий issue содержит похожее сравнение, но не заменяет официальные правила наследования и не доказывает единый дефект. Хороший критерий эскалации — стабильное различие между A→C и A→B→C при одинаковом пользователе, версии C и отсутствии пользовательских скриптов профиля.
Материал подготовлен редакцией VOne с применением ИИ для матрицы A→B→C; правила среды вручную проверены по Microsoft Learn, а issue отделён от доказательств.
Источники и проверка
- Microsoft Learn — PowerShell Environment Variables проверено 2026-08-10
- Microsoft Learn — about PSModulePath проверено 2026-08-10
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.