Гость
Map
Форумы / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в 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
Форумы / Виртуализация и контейнеризация [закрыт для гостей] / Массовое удаление виртуальных машин в VMware vSphere / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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