Powershell 脚本增强功能

Powershell 脚本增强功能

我们有 4 个 Hyper-V 集群,并且我已经创建了一个脚本来启动这些 Hyper-V 集群中的 VM 对象。

该脚本运行良好,但该脚本仅会启动第一个集群中的所有虚拟机,而不会启动后续的虚拟机。

有没有什么方法可以让我们同时在多个集群上启动虚拟机。

$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
        }
    }
}

答案1

您可以使用Start-Job在后台运行 cmdlet 或脚本块:

$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 集群)。

相关内容