【问题标题】:Unable to load PowerShell Script Module无法加载 PowerShell 脚本模块
【发布时间】:2016-08-24 20:14:29
【问题描述】:

我正在尝试加载 PowerShell 脚本模块。以下是我正在遵循的步骤

我在“C:\windows\system32\WindowsPowerShell\v1.0\Modules**PSModuleTest**”文件夹下创建了 2 个文件

PSModuleTest.psd1

@{
ModuleVersion = '1.0'
GUID = '7e8f93e6-5bde-4043-918e-322066c5340e'
Author = 'ravi'
CompanyName = 'Unknown'
Copyright = '(c) 2016 Ravi. All rights reserved.'
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
AliasesToExport = '*'
}

PSModuleTest.psm1

function ModuleTestFunction
{
    Write-Host "Hello world!!!"
}

一旦将以上两个文件放在正确的文件夹下,我就测试了模块路径是否包含在 $env:PSModulePath 中并且它在那里。我还通过输入 $host 命令验证了我不在旧版本的 PowerShell 上。

当我执行 Get-Module 命令时,令人惊讶的是我没有看到我的新模块已加载。所以我尝试通过输入以下命令来加载模块,但没有成功。

Import-Module -Name PSModuleTest -Force -Verbose

有关更多详细信息,请参阅下图了解所有命令的输出。

【问题讨论】:

    标签: powershell powershell-module


    【解决方案1】:

    您可以从上面的屏幕截图中看到,在您导入后,PSModuleTest 没有导出命令。

    只要有可用的清单,您就需要在模块清单文件中声明 PSModuleTest.psm1。例如

    # Script module or binary module file associated with this manifest.
    RootModule = 'PSModuleTest.psm1'
    

    如果您使用 New-ModuleManifest 创建它,这通常是清单中的第一个字段。

    在显式加载或自动加载之前,您的模块不会在会话中可见。只有当命令相对容易被发现(或者模块中的命令被缓存)时,它才能自动加载。

    此命令将显示模块,包括未加载的模块:

    Get-Module -ListAvailable
    

    【讨论】:

    • 谢谢克里斯。那行得通,但我的模块仍然没有自动加载。我在这里错过了什么吗?
    • 最好通过在模块清单 (FunctionsToExport) 中明确列出您希望导出的命令来帮助自动加载。
    • 我这样做了,但没有奏效。必须从 $PsHome\Profile.ps1 文件加载模块。这是正确的方法吗?
    • 这是一种方法。如果您总是希望模块可用,这没有什么问题。我倾向于对我一直想在我身边的模块做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多