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)
Пользователи онлайн (145): Анонимы (135), erbol, Гарыныч, zzdima 1 мин., Bing Bot 1 мин., Yandex Bot 1 мин., Antonariy 2 мин., Ветер 2 мин., Google Bot 3 мин., s62 8 мин., Разум вселенной 9 мин.
x
x
Закрыть


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