有没有办法在 PowerShell 中运行并行编程功能?
类似的东西:
Function BuildParallel($configuration)
{
$buildJob = {
param($configuration)
Write-Host "Building with configuration $configuration."
RunBuilder $configuration;
}
$unitJob = {
param()
Write-Host "Running unit."
RunUnitTests;
}
Start-Job $buildJob -ArgumentList $configuration
Start-Job $unitJob
While (Get-Job -State "Running")
{
Start-Sleep 1
}
Get-Job | Receive-Job
Get-Job | Remove-Job
}
不起作用,因为它抱怨不能识别“RunUnitTests”和“RunBuilder”,它们是在同一个脚本文件中声明的函数。显然这是因为脚本块是一个新的上下文,并且对同一文件中声明的脚本一无所知。
我可以尝试在Start-Job中使用 -InitializationScript ,但RunUnitTests和RunBuilder都会调用在同一文件中声明或从其他文件引用的更多函数,所以......
我确信有办法做到这一点,因为它只是模块化编程(函数,例程和所有东西)。
答案 0 :(得分:1)
您可以将这些功能放在一个单独的文件中,然后通过点源将它们导入到当前上下文中。我在我的Powershell配置文件中执行此操作,因此我的一些自定义功能可用。
$items = Get-ChildItem "$PSprofilePath\functions"
$items | ForEach-Object {
. $_.FullName
}
如果你想导入一个文件,那就是:
. C:\some\path\RunUnitTests.ps1