У нас есть 4 кластера Hyper-V, и я создал сценарий для включения объектов виртуальных машин в этих кластерах Hyper-V.
Сценарий работает нормально, за исключением того, что он включит только все виртуальные машины в первом кластере, а не следующие.
Есть ли способ, позволяющий запускать виртуальные машины одновременно на нескольких кластерах.
$clusters = Get-Content "c:\temp\Clusters.txt"
foreach ($clu in $clusters){
while($true)
{
write-host "Cluster VM resources bringing online for cluster $clu" -ForegroundColor Green
$c = Get-Cluster -name $clu | Get-ClusterResource | where { $_.Name -and $_.state -eq "offline"}
$count = $c.Length
write-host "Current Count: $count" -ForegroundColor Green
if ($count -eq 0){
break
}else{
echo $c[0..5] |Start-ClusterResource -ErrorAction SilentlyContinue -Verbose
Start-Sleep 20
}
}
}
Ты можешь использовать Start-Job
для запуска командлета или блока скрипта в фоновом режиме:
$clusters = Get-Content "c:\temp\Clusters.txt"
foreach ($clu in $clusters) {
Start-Job -ScriptBlock {
Get-Cluster -name $clu | Get-ClusterResource | where { $_.Name -and $_.state -eq "offline"} |ForEach-Object {
$_ |Start-ClusterResource -ErrorAction SilentlyContinue -Verbose
}
}
}
Это не проверено (у меня нет доступного кластера Hyper-V для тестирования).