如何从嵌套的InlineScript中调用工作流中的函数? 以下引发异常,因为该函数超出了InlineScript的范围:
Workflow test
{
function func1
{
Write-Verbose "test verbose" -verbose
}
InlineScript
{
func1
}
}
test
答案 0 :(得分:3)
" inlinescript 活动在标准的非工作流Windows PowerShell会话中运行命令,然后将输出返回到工作流。"
了解更多here。
每个inlinescript都在新的PowerShell会话中执行,因此它不能看到父工作流中定义的任何函数。您可以使用$Using:
语句
workflow Test
{
$a = 1
# Change the value in workflow scope usin $Using: , return the new value.
$a = InlineScript {$a = $Using:a+1; $a}
"New value of a = $a"
}
Test
PS> New value of a = 2
但不是该主题的功能或模块。
答案 1 :(得分:0)
在过去,我使用了将所有常见内容放在powershell模块文件中的技术,并执行:
(2,12,"amar"),(2,120,"kamal"),(2,120,"kamal")
你甚至不需要将它包装在一个模块中,你可以从工作流中定义该功能,它仍然可以工作:
workflow Hey
{
PrepareMachine
ConfigureIIS
}
function PrepareMachine() {
Import-Module "MyCommonStuff"
CallSomethingBlahBlah()
}
function ConfigureIIS {
Import-Module "MyCommonStuff"
CallSomethingBlahBlah2()
}
尽管如此,工作流程并没有让我印象深刻。如果你问我,这似乎是毫无意义的功能。关于工作流的最有用的东西是并行运行的能力,但是工作也可以做到。上面提到的想法是确保你确实需要工作流程:)