Visual Studio Code は PSDesiredStateConfiguration 以外の DSC モジュールを読み込むことができません

Visual Studio Code は PSDesiredStateConfiguration 以外の DSC モジュールを読み込むことができません

Visual Studio Codeをインストールし、PowerShell拡張機能を有効にしました

xHyper-Vやなどのカスタム モジュールを使用して Desired State Configuration を記述したいと思いますxPSDesiredStateConfiguration

ここで問題となるのは、PSDesiredStateConfiguration経由でインポートしたい場合、Visual Studio Code がデフォルトのリソースである DSC リソースしか見つけられないことですImport-DSCResource。その他のインストール済みの DSC リソースは Visual Studio Code では読み込むことができません。PowerShell ISE では、ここでわかるようにすべてが機能します (左は VSCode、右は ISE)。

VSCode の壊れた DSC リソース

しかし奇妙なのは、これがエディター自体にのみ影響することです。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:PSModulePathコピーしても、まだ機能しません。xHyper-VPSDesiredStateConfiguration

面白いのは、これがエディターの IntelliSense にのみ影響するように見えることです。カスタム DSC モジュールを使用して構成を実行すると、ファイルは*.mof正しく作成されます。

これをどうすれば修正できますか?

問題を解決するために私が試したこと:

  • すべてのカスタムDSCモジュールを削除して再インストールしました
  • VSCode で PowerShell 拡張機能をアンインストールし、VSCode を再起動して再度インストールしました
  • VSCodeを完全に再インストールしました

答え1

顔面を手で覆う。少し恥ずかしいですが、これを投稿してから 1 分後に答えを見つけました。

私もPowerShell Coreインストールしました。 VSCode のターミナルで 1 つの Core セッションが開かれましたが、アクティブなセッションではありませんでしたが、何らかの理由で Intellisense に影響を与えていました。

ターミナルを閉じるだけCoreで、すべてが期待どおりに動作します。

または

昇格されたに DSC モジュールがあるフォルダーが含まれているPowerShell Coreかどうかを確認します。フォルダーはおそらくそこにはありません。次のコマンドを使用して追加し、vscode を再起動して pwsh を再起動すると、pwsh も正しいディレクトリを検索するようになるため、IntelliSense が常に機能します。$env:PSModulePath$env:PSModulePath -split ';'

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

関連情報