Гость
Map
Форумы [новые:2] / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в VMware vSphere / 1 сообщений из 1, страница 1 из 1
05.07.2023, 13:19
    #470886
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массовое удаление виртуальных машин в VMware vSphere
Задача: удалить много ВМ и их клонов из предоставленного списка.

Алгоритм решения:
- используем скриптлеты VMware PowerCLI
- по циклу обходим список ВМ
- учитываем возможное состояние недоступности ВМ на гипервизоре и самого гипервизора

Нюансы: удалять нужно по одной, ставить задержку между командами удаления для снижения нагрузки на datastore (В случае, если спсико на тысячи ВМ - это существенно)
Код: PowerShell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
$CWD = "C:\Users\<user>\Documents\vm_remove"

$CDATE = Get-Date -Format "yyyyMMddHHmmss"

$IFILE = $args[0]
$IFILEN = (Get-Item "$CWD\$IFILE").Basename
$OFILE = "out_vm_remove_$IFILEN-$CDATE.txt"
$PFILE = "processing_$IFILEN-$CDATE.txt"
$RFILE = "vm_removed_$IFILEN-$CDATE.txt"
$RFFILE = "vm_failed_$IFILEN-$CDATE.txt"

Write-Output "" > "$CWD\$OFILE"
Write-Output "" > "$CWD\$PFILE"
Write-Output "" > "$CWD\$RFILE"
Write-Output "" > "$CWD\$RFFILE"

foreach($VM in Get-Content "$CWD\$IFILE") {
  $VM = $VM.trim();
  Get-VM "$VM" | Select Name 2>&1 >> "$CWD\$OFILE"
  if ($?) {
    $HSTATE = $(Get-VMHost $(Get-VM "$VM" | Select VMHost).VMHost | Select ConnectionState).ConnectionState;
    if ($HSTATE -eq "Connected") {
      Write-Output "Remove $VM" | Tee-Object -Append "$CWD\$PFILE"
      Remove-VM -VM "$VM" -DeletePermanently -Confirm:$false 2>&1 >> "$CWD\$OFILE"
      if ($?) {
        Write-Output "Success" | Tee-Object -Append "$CWD\$PFILE"
        Write-Output "Removed $VM" >> "$CWD\$RFILE"
        Start-Sleep -Seconds 12
      }
      elseif (!$?) {
        Write-Output "Failed" | Tee-Object -Append "$CWD\$PFILE"
        Write-Output "Failed to remove $VM" >> "$CWD\$RFFILE"
        Start-Sleep -Seconds 2
      }
    } else {
      Write-Output "Remove $VM" | Tee-Object -Append "$CWD\$PFILE"
      Write-Output "Failed" | Tee-Object -Append "$CWD\$PFILE"
      Write-Output "Failed to remove (vmhost is disconnected) $VM" >> "$CWD\$RFFILE"
      Start-Sleep -Seconds 120
    }
  }
  elseif (!$?) {
    Write-Output "Remove $VM" | Tee-Object -Append "$CWD\$PFILE"
    Write-Output "Failed" | Tee-Object -Append "$CWD\$PFILE"
    Write-Output "Failed to get vm $VM" >> "$CWD\$RFFILE"
    Start-Sleep -Seconds 2
  }
}
...
Изменено: 05.07.2023, 13:21 - basename
Рейтинг: 0 / 0
Форумы [новые:2] / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в VMware vSphere / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (1): Анонимы (1)
Пользователи онлайн (46): Анонимы (24), Yandex Bot, Antonariy, s62, 9288, IT-Клоп, Bing Bot, Умник-практикующий 1 мин., XEugene 1 мин., Просто Трёп 1 мин., Брюквенные годы 1 мин., Sparrow 1 мин., cat2 2 мин., Кусь 2 мин., anonymous 2 мин., Green 2 мин., ElenaG 3 мин., Дед-Папыхтет 4 мин., Ветер 4 мин., NSFuimus 4 мин., kkk-jjj 5 мин., Горбатый ёж 7 мин., Arn 9 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]