Visual Studio Code 无法加载 PSDesiredStateConfiguration 以外的 DSC 模块

Visual Studio Code 无法加载 PSDesiredStateConfiguration 以外的 DSC 模块

我已安装 Visual Studio Code 并启用了 PowerShell 扩展

我想编写一个包含一些自定义模块(如xHyper-V和)的所需状态配置xPSDesiredStateConfiguration

现在的问题是,PSDesiredStateConfiguration当我想通过 导入它们时,Visual Studio Code 只能找到默认资源 DSC 资源。Visual Import-DSCResourceStudio Code 无法加载任何其他已安装的 DSC 资源。在 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

捂脸。有点尴尬,但在我发布这篇文章一分钟后,我找到了答案:

我也PowerShell Core安装了。在后台的 VSCode 终端中打开了一个核心会话,它不是活动的,但它不知何故仍然影响了 Intellisense。

只需关闭Core终端,一切都会按预期工作。

或者

使用 检查提升的权限PowerShell Core是否$env:PSModulePath包含 DSC 模块所在的文件夹$env:PSModulePath -split ';'。该文件夹很可能不在那里。使用以下命令添加它,然后在 vscode 重新启动和 pwsh 重新启动后,IntelliSense 将始终有效,因为 pwsh 现在也会在正确的目录中查找:

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

相关内容