Попытка исключить набор виртуальных машин из списка во входных параметрах

#azure #powershell

#azure #powershell

Вопрос:

Я пытаюсь остановить набор виртуальных машин, и первый пакет должен включать все виртуальные машины, за исключением тех, которые содержатся '*DB*','*web*' в их именах, а затем переходить к следующему пакету для остановки vm containing '*DB*','*web*' .Какие входные данные я должен добавить, чтобы исключить эти виртуальные машины из первого пакета.

Здесь $vname=@('*','*DB*','*web*')

 if($action -eq "stop"){

           Write-Host "You have choosen to Stop VM's in '$bubbleName' ResourceGroup"

           $vname=@('*','*DB*','*web*')
           $i=0
           do{
           Write-Host "Stopping VM with "$vname[$i]
           $vmList = Get-AzVM -ResourceGroupName $bubbleName -Name $vname[$i]

           foreach($vlist in $vmList){
    
               

                $params = @($vlist.Name,$vlist.ResourceGroupName)
                $job = Start-Job -ScriptBlock {
                param($ComputerName,$serviceName)
                Stop-AzVM -Name $ComputerName -ResourceGroupName $serviceName -Force
                } -ArgumentList $params 
                $jobs = $jobs   $job

                # Wait for it all to complete
                Wait-Job -Job $jobs

                # Getting the information back from the jobs
                Get-Job | Receive-Job



            }
      $i  
      }while($vname[$i] -ne $null)
    }
 

Комментарии:

1. Как дела? Ваша проблема решена?

Ответ №1:

Если вы просто хотите найти все виртуальные машины с именами, не содержащими «DB» и «web», попробуйте выполнить команду ниже:

 Get-AzVM | Where-Object {$_.name -notlike '*DB*' -and $_.name -notlike '*web*'}