
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-V
y xPSDesiredStateConfiguration
.
Ahora el problema es que Visual Studio Code solo encuentra el PSDesiredStateConfiguration
recurso 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):
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:PSModulePath
s pero todavía no funciona cuando copio el xHyper-V
módulo a la Ruta donde PSDesiredStateConfiguration
tambié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 *.mof
archivo 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 Core
instalado. 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 Core
terminales y todo funcionará como se esperaba.
o
Registre un PowerShell Core
if elevado que $env:PSModulePath
contenga 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")