
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 リソースが見つかります。次の例を参照してください。
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-V
PSDesiredStateConfiguration
面白いのは、これがエディターの 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")