在 Visual Studio Code 中构建 powershell 模块时出现“InvalidOperation:无法在管道中间运行文档:”错误

Ban*_*nji 7 powershell powershell-module visual-studio-code

问题描述

当我在 Visual Studio Code 1.58.2 中的模块 SampleModule.psm1 上选择“运行而不调试”时

function ConvertTo-PascalCase([String []] $words) {
    [String] $pascalCaseString = [String]::Empty

    foreach ($word in $words) {
        $pascalCaseString = $pascalCaseString + ($word.Substring(0,1).ToUpper() + $word.Substring(1))
    }
    $pascalCaseString = ($pascalCaseString.TrimEnd(',')).Trim()
    
    return $pascalCaseString
}

Export-ModuleMember -Function Convert-ToPascalCase
Run Code Online (Sandbox Code Playgroud)

我不断收到错误消息:

InvalidOperation:无法在管道中间运行文档

屏幕截图更详细地显示了它。每当我构建任何模块时,我都会收到同样的错误消息

vscode 运行 *.psm1 文件时出现错误消息

我尝试过但不起作用的事情

  1. 在 VSCode 中检查我的 PowerShell 扩展及其设置
  2. 在 VSCode 中使用不同的 PowerShell 版本
  3. 包含清单没有什么区别
  4. 研究错误消息以获取有关其在这种特定情况下的含义的更多详细信息
  5. 检查我的 VSCode 终端环境的配置

我如何知道这是运行 PSM1 文件的问题

如果我将 .psm1 模块文件转换回普通的旧 Powershell 脚本 (*.ps1) 脚本并删除所有Export-Module 成员命令,则脚本运行得很好。

我的工作

要在 VSCode 中执行该模块,我必须使用 dotsource 才能成功导入该模块:

PS C:\Users\griot\SampleModule> .\SampleModule.psm1

PS C:\Users\griot\SampleModule> Import-Module .\SampleModule.psm1

PS C:\Users\griot\SampleModule>
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 有什么想法为什么我会收到错误消息吗?

  2. 在 VSCode 中运行和调试 PowerShell 模块的推荐方法是什么?

小智 0

在我看来,ConvertTo-PascalCase函数名称有一个拼写错误。 Convert-ToPascalCase$null导出的函数