正在使用此脚本,但它收集所有vms并逐个停止,即使VM已经处于停止状态。
$vm = Get-Azvm
foreach($vms in $vm)
{
$resource = Get-Azvm | where {$_.Statuses -eq "Running"}
if($resource -ne $null)
{
Write-Output "Stopping virtual machine..." + $vms
Stop-AzVM -ResourceGroupName $resource.ResourceGroupName -Name $vms -Force
}
else
{
Write-output "Virtual machine not found:" + $vms
}
}发布于 2021-11-29 05:02:39
基于上述共享需求,我们修改了PowerShell脚本,以检查虚拟机状态(是否正在运行),如果虚拟机正在运行,则需要使用stop-Azvm cmdlet停止它。
在本地环境中检查以下脚本(测试时,我们将资源组标志传递给Get-Azvm ),运行良好。
$vm = Get-Azvm -Status
foreach($vms in $vm)
{
$statuscheck = Get-AzVM -ResourceGroupName $vms.ResourceGroupName -Name $vms.Name -Status
if($statuscheck.Statuses.DisplayStatus[1] -eq "VM running")
{
Write-Output "Stopping virtual machine...$($vms.Name)"
Stop-AzVM -ResourceGroupName $vms.ResourceGroupName -Name $vms.Name -Force
}
else
{
Write-output "Virtual machine $($vms.Name) is already in stopped state"
}
}下面是供参考的示例输出:

https://stackoverflow.com/questions/70145486
复制相似问题