1
我正在使用PowerShell 5.0并尝试编写多文件模块。
该模块的文件夹结构是这样的:如何将脚本文件中的函数包含到PowerShell模块中
/FooModule
--- FooModule.psd1
--- FooModule.psm1
--- AnotherScriptFile.ps1
清单文件FooModule.psd1定制类似如下:
@{
ModuleVersion = '0.0.1'
GUID = ...
Author = ...
CompanyName = ..
Copyright = ...
Description = ...
PowerShellVersion = '5.0'
ClrVersion = '4.0'
RootModule = "FooModule.psm1"
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
AliasesToExport = '*'
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}
我把这些在FooModule.psm1的开头:
Push-Location $PSScriptRoot
.\AnotherScriptFile.ps1
Pop-Location
AnotherScriptFile.ps1看起来像这样:
Write-Host "Imported!"
function Get-FooFunction($val)
{
return "Foo Bar";
}
我想,当我导入模块时,它会将AnotherScriptFile.ps1的函数和变量读入模块的作用域,并导出。 不幸的是,我在模块的文件夹中导入了Import-Module .\FooModule.psm1
模块后,调用Get-FooFunction
给了我一个错误,说Get-FooFunction
不存在,'Write-Host "Imported!"
被调用。
什么是正确的方法来完成这项工作?
感谢您的快速回复。我尝试过,但它没有工作:( – WonTasia
另一种方法是点击您的FooModule.psm1中的文件(用另一个点)。试试这个: '。\。\ AnotherScriptFile.ps1' –
我试过了,但是这一次发生了错误,说'.. \ AnotherScriptFile.ps1不被识别为cmdlet,函数,脚本文件或可操作程序的名称。“。工作目录被设置为模块的根目录。 – WonTasia