Visual Studio Code no puede cargar módulos DSC que no sean PSDesiredStateConfiguration

Visual Studio Code no puede cargar módulos DSC que no sean PSDesiredStateConfiguration

Tengo instalado Visual Studio Code y habilité la extensión PowerShell

Me gustaría escribir una configuración de estado deseada con algunos módulos personalizados como xHyper-Vy xPSDesiredStateConfiguration.

Ahora el problema es que Visual Studio Code solo encuentra el PSDesiredStateConfigurationrecurso DSC, que es un recurso predeterminado, cuando quiero importarlos a través de Import-DSCResource. Visual Studio Code no puede cargar ningún otro recurso DSC instalado. en PowerShell ISE todo funciona como puede ver aquí (a la izquierda está VSCode, a la derecha ISE):

Recurso DSC roto en VSCode

Sin embargo, lo extraño es que esto sólo afecta al propio editor. en la terminal en vscode encuentra recursos DSC en todos los módulos. vea este ejemplo:

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...}

también encuentra los módulos mismos:

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...}

La única diferencia es que están en diferentes $env:PSModulePaths pero todavía no funciona cuando copio el xHyper-Vmódulo a la Ruta donde PSDesiredStateConfigurationtambién reside.

Lo curioso es que esto sólo parece afectar al IntelliSense del Editor. Si ejecuto la Configuración con mis módulos DSC personalizados, todavía crea el *.mofarchivo correctamente.

¿Cómo puedo arreglar esto?

Lo que he intentado solucionar el problema:

  • eliminó y reinstaló todos los módulos DSC personalizados
  • Desinstalé la extensión de PowerShell en VSCode, reinicié VSCode y la instalé nuevamente
  • VSCode completamente reinstalado

Respuesta1

Palma de la cara. Un poco vergonzoso, pero 1 minuto después de publicar esto encontré la respuesta:

Yo también lo tengo PowerShell Coreinstalado. Se abrió una sesión principal en la terminal de VSCode en la parte posterior, no era la activa, pero de alguna manera aún afectó a Intellisense.

Simplemente cierre las Coreterminales y todo funcionará como se esperaba.

o

Registre un PowerShell Coreif elevado que $env:PSModulePathcontenga la carpeta donde se encuentran los módulos DSC $env:PSModulePath -split ';'. Lo más probable es que la carpeta no esté allí. use el siguiente comando para agregarlo y luego, después de reiniciar vscode y reiniciar pwsh, IntelliSense siempre funcionará ya que pwsh ahora también buscará en el directorio correcto:

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

información relacionada