我有一个模块,我试图导出一个函数/别名。我试图导出的项目是一个脚本文件foo.ps1,它没有声明一个命名函数,但我想将它导出为会话中可用的,因为它能够调用foo。这支持吗?如果是,如何配置Export-ModuleMember呼叫?
以下是文件顶部的摘录:
[CmdletBinding(DefaultParameterSetName='default')]
param(
[Parameter(Position=0,Mandatory=$false,HelpMessage="You must specify which task to execute.")]
[ValidateSet('install','update', 'uninstall', 'outdated', 'init', 'help', '?')]
....
没有功能定义。而是函数名称是文件名。
答案 0 :(得分:1)
我能够将脚本内容加载到ScriptBlock中并从中创建一个函数。
[string]$content = Get-Content $here\foo.ps1 -Delimiter ([Environment]::NewLine)
$block = [ScriptBlock]::Create($content)
Invoke-Expression "function foo { $block }"
Export-ModuleMember -function foo
这很有效,但远非理想。
答案 1 :(得分:0)
未经过测试,但尝试在模块psm1文件中点源脚本,并使用Export-ModuleMember
导出其功能。
答案 2 :(得分:0)
试试这个
PS II> # UNTESTED
PS II> $excmd = gcm G:\inventory.ps1
PS II> set-item function:$($excmd.name.replace('.','_')) -val $excmd.scriptblock
PS II> inventory_ps1