【问题标题】:The '' command was found in the module '', but the module could not be loaded在模块“”中找到“”命令,但无法加载该模块
【发布时间】:2021-10-08 15:10:29
【问题描述】:

似乎没有其他问题可以回答我的问题,所以我将其发布在这里。我正在从 .psm1 文件中导出函数。我的结构是这样的

Modules (folder)
    CompanyName (folder)
        SQL (folder)
            SQL.psm1

Get-Module -Listavailable 的结果返回包含我的命令的文件。 (很明显我的路径是正确的,否则这个调用不会返回我在SQL.psm1中导出的函数)

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     0.0        SQL                                 {Import-BCPFile, Export-BCPFile}

但是,我在尝试运行该函数时遇到错误, Import-BCPFile:在模块“SQL”中找到“Import-BCPFile”命令,但无法加载该模块。为了 更多信息,运行'Import-Module SQL'。

我运行Import-Module SQL 并得到另一个错误, Import-Module : 未加载指定的模块“SQL”,因为在任何模块中都找不到有效的模块文件 目录。

你知道为什么我不能调用我的函数吗?

【问题讨论】:

    标签: sql-server powershell module


    【解决方案1】:

    如果你像我一样被卡住,试着像这样导入模块,

    Import-Module "C:\Program Files\WindowsPowerShell\Modules\Company\SQL"

    导入模块将返回模块中的任何语法错误。我最终在参数列表中遗漏了一个逗号。修复此问题后,我可以在我的 powershell 窗口中运行 Import-BCPFile!!

    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$True)]
        [string]$BCPFile,
        [Parameter(Mandatory=$True)]
        [string]$Database,
        [Parameter(Mandatory=$True)]
        [string]$TableToImport,
        [Parameter(Mandatory=$True)]
        [string]$SQLServer = "." # <-- missing a comma!
    
        [switch]$Truncate = $False
    )
    

    【讨论】:

    • 我不是反对者,但我的猜测是应该删除这个问题(问题最终是错字的问题对其他人来说通常不是很有用)。
    • 假设错误消息不明确是不公平的,因为我的脚本中有错字 - 找到解决方案需要一个问题?
    • 可能,但老实说,依赖模块自动加载作为测试模块的方法是不寻常的。通常,模块作者在测试过程中已经手动导入了他们的模块,因此会立即发现语法错误。此外,错误消息非常清楚,但我认为您的文件夹结构已关闭,这就是按名称导入不起作用的原因,您必须执行按路径导入的额外步骤(我认为您应该删除 CompanyName 文件夹完全水平。考虑将您的模块命名为CompanySQLCompany.SQL
    • @briantist 错误消息很糟糕,但很容易用谷歌搜索。这个问答帮助我在我们的工具链中找到了一个问题。很疯狂的是,powershell 在导入失败时不会崩溃,只会在调用函数时崩溃。
    • @SimonBergot 是的,这是一个很好的观点,感谢您给我一个再次查看这个问题的理由。我已经对问题和答案投了赞成票。
    【解决方案2】:

    从下载的 zip 文件安装模块时(例如,将 AWS powershell 工具下载为 zip 文件时),如果 Zip 文件因不安全而被阻止,也会导致同样的错误。

    在提取模块之前取消阻止 zip 文件似乎可以为我解决此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多