
Ich habe Visual Studio Code installiert und die PowerShell-Erweiterung aktiviert
Ich möchte eine Sollzustandskonfiguration mit einigen benutzerdefinierten Modulen wie xHyper-V
und schreiben xPSDesiredStateConfiguration
.
Das Problem ist nun, dass Visual Studio Code die PSDesiredStateConfiguration
DSC-Ressource, die eine Standardressource ist, nur findet, wenn ich sie über importieren möchte Import-DSCResource
. Andere installierte DSC-Ressourcen kann Visual Studio Code nicht laden. In PowerShell ISE funktioniert alles wie hier zu sehen (links VSCode, rechts ISE):
Das Seltsame ist jedoch, dass dies nur den Editor selbst betrifft. Im Terminal in vscode werden DSC-Ressourcen in allen Modulen gefunden. Siehe dieses Beispiel:
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...}
es findet auch die Module selbst:
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...}
Der einzige Unterschied besteht darin, dass sie sich an unterschiedlichen $env:PSModulePath
Stellen befinden, aber es funktioniert trotzdem nicht, wenn ich das xHyper-V
Modul in den Pfad kopiere, in dem PSDesiredStateConfiguration
es sich auch befindet.
Das Komische ist, dass dies anscheinend nur das IntelliSense des Editors betrifft. Wenn ich die Konfiguration mit meinen benutzerdefinierten DSC-Modulen ausführe, wird die *.mof
Datei trotzdem korrekt erstellt.
Wie kann ich das beheben?
Was ich versucht habe, um das Problem zu beheben:
- alle benutzerdefinierten DSC-Module gelöscht und neu installiert
- PowerShell-Erweiterung in VSCode deinstalliert, VSCode neu gestartet und erneut installiert
- VSCode komplett neu installiert
Antwort1
Facepalm. Etwas peinlich, aber 1 Minute nachdem ich das gepostet habe, habe ich die Antwort gefunden:
Habe ich auch PowerShell Core
installiert. Im Terminal von VSCode war hinten eine Core Session geöffnet, es war nicht die aktive, aber irgendwie hat es trotzdem Intellisense beeinflusst.
Schließen Sie einfach die Core
Terminals und alles funktioniert wie erwartet.
oder
Überprüfen Sie in einem erhöhten Zugriffsrecht PowerShell Core
, ob $env:PSModulePath
der Ordner mit den DSC-Modulen enthalten ist $env:PSModulePath -split ';'
. Der Ordner ist höchstwahrscheinlich nicht darin enthalten. Verwenden Sie den folgenden Befehl, um ihn hinzuzufügen. Nach einem Neustart von vscode und pwsh funktioniert IntelliSense immer, da pwsh jetzt auch im richtigen Verzeichnis sucht:
$CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
[Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + [System.IO.Path]::PathSeparator + "C:\Program Files\WindowsPowerShell\Modules", "Machine")