powershell - 同时运行几个Powershell后台作业,结果不如预期
问题描述
我尝试在后台运行几个 Azure cmdlet(我通过开关参数“-asJob”和 Start-Job cmdlet 进行了尝试),我使用某些键将 cmdlet 操作推送到哈希表,然后迭代正在运行的作业。问题是所有 cmdlet 同时将状态更改为“已完成”,即使哈希表中的某些作业实际上以“已完成”结束。
感觉所有工作都以最后一个结束工作结束。下面我写了一些有问题的示例代码
$vmssInstances = Get-AzVmssVM -ResourceGroupName $(agentPoolName) -VMScaleSetName $(agentPoolName)
$groupedVmssInstancesByComputerName = @{}
foreach($vmssInstance in $vmssInstances)
{
$groupedVmssInstancesByComputerName[$vmssInstance.OsProfile.ComputerName] = @{vmmsInstance = $vmssInstance; agents = @(); isFullyUpdated = $false}
}
foreach($key in $groupedVmssInstancesByComputerName.Keys)
{
$vmssInstance = $groupedVmssInstancesByComputerName[$key]["vmmsInstance"]
Write-Host "Trying to reimage instance $($vmssInstance.InstanceId)..."
$groupedVmssInstancesByComputerName[$key]["reimageOperation"] = Set-AzVmssVM -Reimage -InstanceId $vmssInstance.InstanceId -ResourceGroupName $(agentPoolName) -VMScaleSetName $(agentPoolName) -AsJob
}
while($true)
{
Get-Job
Start-Sleep -Seconds 10
}
我无法理解发生了什么。也许我不知道powershell的一些功能。请帮帮我,伙计们!
解决方案
尝试使用 Wait-Job - 禁止命令提示符,直到会话中运行的一个或所有 PowerShell 后台作业完成。
Get-Job | Wait-Job
推荐阅读
- hibernate - Override hibernate 物理命名策略 | @Column 不工作
- python-3.x - Flask 应用程序中的 FloatField 条目出现问题
- javascript - 按钮单击上的 javascript 功能有时有效
- c++ - 如何修复超过 1 分钟规则的 Collatz 序列码?
- reactjs - 反应选择没有选择选项
- python - 熊猫:选择最后“N”列
- react-native - 无法解析模块`@expo/vector-icons/FontAwesome`
- python - Python Argparse:可选参数中的参数
- flutter - Flutter 的 PopupMenuButton 中未显示图标
- javascript - 在 HTML 上显示多个 JSON 响应作为单个值