Как массово отключить хранилища от хостов VMware ESXI через скрипт

Как массово отключить хранилища от хостов VMware ESXI через скрипт

При замене СХД понадобилось отключить датасторы (хранилища) от хостов в VMware. Хостов 8, хранилищ 30. Делать это руками не хотелось. Пришлось изучать PowerCLI.
Решил я все скриптом

  1. #########################################################################################################
  2. #
  3. #  Скрипт отключает датасторы у выбранных хостов. Делает Unmount, потом Detach
  4. # Переменная $hosts — список хостов
  5. # Переменная $storage — список отключаемых датасторов/хранилищ.
  6. #
  7. #########################################################################################################
  8. # Подключаем оснастку, если ее нет
  9. if ( (Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null )
  10. {
  11.     add-pssnapin VMware.*
  12. }
  13. else
  14. {
  15.     Write-Host «Snap in already added.»
  16. }
  17. #################################################
  18. # Убираем ругань на самоподписанный сертификат
  19. Set-powercliconfiguration -InvalidCertificateAction Ignore -Confirm:$false | out-null
  20. #################################################
  21. #vCenter Server
  22. $vCenter = «bs-vc»
  23. #I Если не подключены к vCentr, то подключаемся
  24. if ($global:DefaultVIServers.Count -lt 1)
  25. {
  26.     Connect-VIServer $vCenter
  27. }
  28. # получаем список ESX-серверов
  29. #$hosts = (Get-Content D:\PowerCLI\1unmountdatastoresservers.txt)
  30. # Список всех хостов
  31. # $hosts = Get-VMhost
  32. # Выборочный список хостов
  33. $hosts = «bs-esx07″, «bs-esx08″
  34. # Список Datastores, которые требуется отключить
  35. #$storage = (Get-Content D:\PowerCLI\storage.txt)
  36. $storage = «SAS_ThinClient_A_1″, «SAS_ThinClient_A_2″, «SAS_ThinClient_B_1″, «SAS_ThinClient_B_2″
  37. # Проверяем на каждом хосте
  38. foreach($esx in $hosts)
  1. {
  2.     Write-host «Servers: » $esx
  3.     # Подключаемся к хосту для выполнения команды esxcli
  4.     $esxcli = Get-ESXCLI -VMHost $esx
  5.     #Hosts Datastores
  6.     $hostds=Get-Datastore -VMhost $esx
  7.     #Проверяем наличие нужных датасторов на хосте
  8.     foreach ($st in $storage)
  9.     {
  10.         foreach($hds in $hostds)
  11.         {
  12.          #Write-Host «Проверяемый датастор: » $hds
  13.          if ($st -eq $hds)
  14.          {
  15.             Write-Host
  16.             Write-Host «Server: » $esx «have mapped datastores » $hds
  17.             Write-Host
  18.             # Проверяем включен ли SIOC, если да, то отключаем.
  19.             $SIOC = Get-Datastore -Name $hds
  20.             if ($SIOC.StorageIOControlEnabled -eq $True)
  21.             {
  22.                 Set-Datastore $hds -StorageIOControlEnabled $false
  23.                 # Ждем, когда завершится отключение SIOC
  24.                 Start-Sleep -s 10
  25.             }
  26.             $lun = $esxcli.storage.vmfs.extent.list() | Where-Object {$_.VolumeName -eq $hds}
  27.             $device_id=$lun.DeviceName
  28.             #Unmount Datastore
  29.             Write-Host «Unmount datastore » $hds » from » $esx
  30.             $esxcli.storage.filesystem.unmount($true,$hds)
  31.             #Detach Datastore
  32.             Write-Host «Detach datastore » $hds » from » $esx
  33.             $esxcli.storage.core.device.set($device_id,»IsOffline»,$null,»off»)
  34.          }
  35.         }
  36.     }# Конец проверки наличие нужных датасторов на хосте
  37. } # Конец проверки на каждом хосте

Далее рассмотрим Как очистить все отключенные хранилища у хостов в VMware ESXi через скрипт

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

я в гугл