我试图获得一个在工作中使用函数的简单工作示例。我已经设法将我的函数传递到用于我的工作的脚本块中,但我似乎无法获取函数的参数。
# concurrency
$Logx =
{
param(
[parameter(ValueFromPipeline=$true)]
$msg
)
Write-Host ("OUT:"+$msg)
}
# Execution starts here
cls
$colors = @("red","blue","green")
$colors | %{
$scriptBlock =
{
Invoke-Expression -Command $args[1]
Start-Sleep 3
}
Write-Host "Processing: " $_
Start-Job -scriptblock $scriptBlock -args $_, $Logx
}
Get-Job
while(Get-Job -State "Running")
{
write-host "Running..."
Start-Sleep 2
}
# Output
Get-Job | Receive-Job
# Cleanup jobs
Remove-Job *
这是输出:
Processing: red
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
175 Job175 Running True localhost ...
Processing: blue
177 Job177 Running True localhost ...
Processing: green
179 Job179 Running True localhost ...
179 Job179 Running True localhost ...
177 Job177 Running True localhost ...
175 Job175 Running True localhost ...
Running...
Running...
OUT:
OUT:
OUT:
因此,正如输出中的 OUT: x3 所证明的那样,我的函数被调用了,但我还没有找到任何允许我获取函数参数的语法。想法?
编辑:
请注意下面 Shawn 的观察和我的回复,我尝试使用函数作为变量,因为使用传统函数似乎不起作用。如果有办法让它工作,我会很高兴不必将我的函数作为变量传递。