#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*'}