powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в VMware vSphere
1 сообщений из 1, страница 1 из 1
Массовое удаление виртуальных машин в VMware vSphere
    #470886
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: удалить много ВМ и их клонов из предоставленного списка.

Алгоритм решения:
- используем скриптлеты 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
1 сообщений из 1, страница 1 из 1
Форумы / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в VMware vSphere
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (1): Анонимы (1)
Пользователи онлайн (25): Анонимы (11), Горбатый ёж, Yandex Bot, prostozevs, s62, Шоколадный01 1 мин., basename 1 мин., Bing Bot 1 мин., Ветер 2 мин., Дед-Папыхтет 2 мин., CerebroSQL 3 мин., Червь 3 мин., Сталкер 5 мин., cat2 6 мин., MaksRoman0w 8 мин.
x
x
Закрыть


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