【发布时间】:2015-12-10 23:50:35
【问题描述】:
我有两个.ps1 文件。一个叫另一个。我想将一个函数名传递给另一个,以便另一个可以调用一个文件中定义的函数(依赖注入)。似乎是在调用另一个 .ps1 文件时,它虽然没有从调用者模块范围内查看函数。
这样做的原因是我可以生成一些包含这些函数的 powershell 实例。但是,由于这些是单独的实例,它们将无法访问调用者代码,因此我需要通过说明我希望导出哪些函数并将这些函数转换为脚本字符串来重新生成函数并将它们提供给新进程像这样:
Param(
[string]$Command,
[Array]$IncludeFunction = @()
)
Begin{
$Command += "`r`n"
Foreach ($functionName in $IncludeFunction)
{
$Command += "function $functionName() { ${function:$functionName} }`r`n"
}
}
我注意到可以访问调用模块范围的变量,所以我想知道函数是否也可以这样做。
【问题讨论】:
-
简单地点源其他文件有什么问题吗?
. 'C:\path\to\other.ps1' -
是的,刚刚发现,但事实证明它是不需要的。似乎
${function:$functionName}不起作用。我必须改用(get-command $functionName).Definition。 o.O
标签: powershell