Eu tenho o Visual Studio Code instalado e habilitado a extensão do PowerShell
Eu gostaria de escrever uma configuração de estado desejado com alguns módulos personalizados como xHyper-V
e xPSDesiredStateConfiguration
.
Agora o problema é que o Visual Studio Code encontra apenas o PSDesiredStateConfiguration
DSC Resource que é um recurso padrão, quando eu quero importá-los via Import-DSCResource
. Qualquer outro recurso DSC instalado não pode ser carregado pelo Visual Studio Code. no PowerShell ISE tudo funciona como você pode ver aqui (à esquerda é VSCode, à direita ISE):
O estranho, porém, é que isso só afeta o próprio editor. no terminal em vscode encontra Recursos DSC em todos os módulos. veja este exemplo:
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...}
ele também encontra os próprios módulos:
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...}
A única diferença é que estão em $env:PSModulePath
s diferentes mas ainda não funciona quando copio o xHyper-V
módulo para o Path onde PSDesiredStateConfiguration
também reside.
O engraçado é que isso só parece afetar o IntelliSense do Editor. Se eu executar a configuração com meus módulos DSC personalizados, ele ainda criará o *.mof
arquivo corretamente.
Como posso consertar isso?
O que eu tentei corrigir o problema:
- excluiu e reinstalou todos os módulos DSC personalizados
- desinstalei a extensão do PowerShell no VSCode, reiniciei o VSCode e instalei novamente
- VSCode completamente reinstalado
Facepalm. Um pouco embaraçoso, mas 1 minuto depois de postar isso, encontrei a resposta:
Eu também
PowerShell Core
instalei. Uma Sessão Core foi aberta no Terminal do VSCode na parte de trás, não era a ativa, mas de alguma forma ainda afetou o Intellisense.Basta fechar os
Core
terminais e tudo funcionará como esperado.ou
Faça check-in elevado
PowerShell Core
se$env:PSModulePath
contiver a pasta em que os módulos DSC estão com o$env:PSModulePath -split ';'
. A pasta provavelmente não estará lá. use o seguinte comando para adicioná-lo e, em seguida, após a reinicialização do vscode e a reinicialização do pwsh, o IntelliSense sempre funcionará, pois o pwsh agora também procurará no diretório correto: