gpt4 book ai didi

powershell - 有没有办法从 PowerShell 中的调用模块范围访问函数?

转载 作者:行者123 更新时间:2023-12-02 23:43:19 24 4
gpt4 key购买 nike

我有两个 .ps1文件。一个叫另一个。我想将一个函数名传递给另一个,以便另一个可以调用在一个文件中定义的函数(依赖注入(inject))。似乎是在调用另一个 .ps1 时文件,但它没有来自调用者模块范围的函数 View 。

这样做的原因是我可以生成一些包含这些函数的 powershell 实例。但是,由于这些是单独的实例,它们将无法访问调用者代码,因此我需要通过说明我希望导出哪些函数并将这些函数转换为脚本字符串来重新生成函数并将它们提供给新进程像这样:

Param(
[string]$Command,
[Array]$IncludeFunction = @()
)
Begin{
$Command += "`r`n"
Foreach ($functionName in $IncludeFunction)
{
$Command += "function $functionName() { ${function:$functionName} }`r`n"
}
}

我注意到可以访问调用模块范围的变量,所以我想知道函数是否也可以这样做。

最佳答案

在脚本中包含函数的快速而肮脏的方法是将函数写入第二个脚本和dot-source。在要使用函数的脚本中:

# script1.ps1

. 'C:\path\to\script2.ps1'

SomeFunctionFromScript2 -Foo 'bar'

如果你想为多个脚本提供一个函数库,最好将函数封装在一个 script module 中。 .
# library.psm1

function FunctionA {
...
}

function FunctionB {
...
}

Export-ModuleMember -Function *

然后你可以分发这个库,人们可以像任何其他模块一样导入它:
# script1.ps1

Import-Module library

FunctionA ...

关于powershell - 有没有办法从 PowerShell 中的调用模块范围访问函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34205830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com