linux调用另外一个函数,从PowerShell中的另一个函数调用函数

您可以将函数和函数调用移动到工作流内的 InlineScript (PowerShell ScriptBlock),如下所示 .

workflow test {

InlineScript

{

function func1{

Write-Output "Func 1"

logMessage

}

function logMessage{

Write-Output "logMessage"

}

func1

}

}

输出:

Func 1

logMessage

正如@JeffZeitlin在他的回答中提到的,工作流程不是PowerShell,而是更具限制性 . InlineScript块允许解释普通的PowerShell代码,但范围将与InlineScript块相关联 . 例如,如果您在脚本块中定义函数然后尝试在InlineScript块之外调用 func1 函数(但仍在工作流中),则它将失败,因为它超出了范围 .

如果您在工作流程之外或工作流程内部而不是在InlineScript块中定义两个函数,则会发生相同的情况 .

现在举例说明如何将其应用于运行 foreach -parallel 循环 .

workflow test {

## workflow parameter

param($MyList)

## parallel foreach loop on workflow parameter

foreach -parallel ($Item in $MyList)

{

## inlinescript

inlinescript

{

## function func1 declaration

function func1{

param($MyItem)

Write-Output ('Func 1, MyItem {0}' -f $MyItem)

logMessage $MyItem

}

## function logMessage declaration

function logMessage{

param($MyItem)

Write-Output ('logMessage, MyItem: {0}' -f $MyItem)

}

## func1 call with $Using:Item statement

## $Using: prefix allows us to call items that are in the workflow scope but not in the inlinescript scope.

func1 $Using:Item

}

}

}

对此工作流程的示例调用如下所示

PS> $MyList = 1,2,3

PS> test $MyList

Func 1, MyItem 3

Func 1, MyItem 1

Func 1, MyItem 2

logMessage, MyItem: 3

logMessage, MyItem: 2

logMessage, MyItem: 1

您将注意到(并且如预期的那样)输出顺序是随机的,因为它是并行运行的 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值