嵌套foreach状态



我有以下脚本来列出hyper-V服务器上正在运行的vm:

$VirtualHosts = Get-content "C:scriptsHosts.txt"
ForEach ($Guest in $VirtualHosts)
{Get-VM -ComputerName $Guest | Where State -eq Running | FT Name}

我想添加使用Restart-Computercmdlet重新启动计算机的功能。为此,我计划使用嵌套的foreach语句。你能帮我处理嵌套语句吗?

在PowerShell中嵌套两个循环结构非常简单-只需确保内部/嵌套的循环完全包含在外部循环的主体中即可:

$VirtualHosts = Get-content "C:scriptsHosts.txt"
foreach($vHost in $VirtualHosts)
{
foreach($runningVM in Get-VM -ComputerName $vHost | Where State -eq Running)
{
$runningVM |Restart-VM
}
}

您也可以完全跳过内部循环,只需将输出从Get-VM直接管道传输到Restart-VM:

foreach($vHost in $VirtualHosts)
{
Get-VM -ComputerName $vHost | Where State -eq Running | Restart-VM
}

最新更新