Visual Studio Code не может загрузить модули DSC, отличные от PSDesiredStateConfiguration

Visual Studio Code не может загрузить модули DSC, отличные от PSDesiredStateConfiguration

У меня установлен Visual Studio Code и включено расширение PowerShell.

Я хотел бы написать конфигурацию желаемого состояния с некоторыми пользовательскими модулями, такими как xHyper-Vи xPSDesiredStateConfiguration.

Теперь проблема в том, что Visual Studio Code находит только PSDesiredStateConfigurationресурс DSC, который является ресурсом по умолчанию, когда я хочу импортировать их через Import-DSCResource. Любой другой установленный ресурс DSC не может быть загружен Visual Studio Code. В PowerShell ISE все работает, как вы можете видеть здесь (слева VSCode, справа ISE):

Неработающий ресурс DSC в VSCode

Но странно то, что это влияет только на сам редактор. В терминале в vscode он находит ресурсы DSC во всех модулях. Посмотрите этот пример:

PS Z:\Powershell-Scripts\DesiredStateConfiguration> Get-DscResource xVHD

ImplementedAs   Name                      ModuleName                     Version    Properties
-------------   ----                      ----------                     -------    ----------
PowerShell      xVHD                      xHyper-V                       3.17.0.0   {Name, Path, DependsOn, Ensure...}


PS Z:\Powershell-Scripts\DesiredStateConfiguration> Get-DscResource WindowsFeature

ImplementedAs   Name                      ModuleName                     Version    Properties
-------------   ----                      ----------                     -------    ----------
PowerShell      WindowsFeature            PSDesiredStateConfiguration    1.1        {Name, Credential, DependsOn, Ensure...}

он также находит сами модули:

PS Z:\Powershell-Scripts\DesiredStateConfiguration> Get-Module xHyper-V, PSDesiredStateConfiguration -ListAvailable


    Verzeichnis: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.17.0.0   xHyper-V


    Verzeichnis: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.1        PSDesiredStateConfiguration         {Set-DscLocalConfigurationManager...}

Единственное отличие в том, что они находятся в разных $env:PSModulePaths, но это все равно не работает, когда я копирую xHyper-Vмодуль в путь, где PSDesiredStateConfigurationтакже находится.

Забавно, что это, похоже, влияет только на IntelliSense редактора. Если я запускаю конфигурацию с моими пользовательскими модулями DSC, она все равно создает файл *.mofправильно.

Как я могу это исправить?

Что я пытался сделать, чтобы решить эту проблему:

  • удалил и переустановил все пользовательские модули DSC
  • удалил расширение PowerShell в VSCode, перезапустил VSCode и установил его снова
  • полностью переустановил VSCode

решение1

Фейспалм. Немного неловко, но через минуту после публикации я нашел ответ:

Я тоже PowerShell Coreустановил. Один сеанс ядра был открыт в терминале VSCode сзади, он не был активным, но он каким-то образом все равно влиял на Intellisense.

Просто закройте Coreтерминалы, и все будет работать так, как и ожидалось.

или

Проверьте в повышенном привилегированном состоянии PowerShell Core, если $env:PSModulePathсодержит папку, в которой находятся модули DSC $env:PSModulePath -split ';'. Скорее всего, папки там не будет. Используйте следующую команду, чтобы добавить ее, и затем после перезапуска vscode и перезапуска pwsh IntelliSense всегда будет работать, поскольку pwsh теперь также будет искать в правильном каталоге:

$CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
[Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + [System.IO.Path]::PathSeparator + "C:\Program Files\WindowsPowerShell\Modules", "Machine")

Связанный контент