Введение
	Данная статья является продолжением предыдущей статьи, в которой я упоминал средство управления VmWare PowerCli
	PowerCli является модулем для PowerShell позволяющим управлять всей инфраструктурой VmWare. Его возможности несколько шире, чем возможности VmWare vSphere Management Assistant (vMA), ввиду более глубокого уровня абстракции.Подробней о возможностях можно почитать в официальной документации.
	В данной статье я опишу реализацию задачи, описанной мной ранее, с применением PowerCli.
	Следует отметить, что являясь модулем для PowerShell, PowerCli так же оперирует объектами, в чем мы убедимся дальше.
	PowerCli
	Установив PowerCli на машину, добавляем модуль в PowerShell
Add-PSSnapin VMware.VimAutomation.Core -ErrorAction:SilentlyContinue
	 
	Коннектимся к vCenter серверу. 
	Для сохранения учетных данных, предварительно нужно выполнить комманду
#Connect to vCenter and save credentials
Connect-VIServer $vSphere -User "username" -Password "password" -SaveCredentials
	Или добавить новую запись в credential store 
#New Credentials
New-VICredentialStoreItem -Host $vSphere  -User "username" -Password "password"
	 
	После добавления используем комманду
#Connect to vCenter
Connect-VIServer $vSphere
	
	После соединения с vSphere мы можем получить список виртуальных машин, последовательной выборкой из объектов : датацент - хост - виртуальная машина
	Ниже представлен пример получения виртуальных машин с определенного хоста $hostname
$vms_host=Get-Datacenter| Get-VMHost -Name $hostname |get-vm
	Важно то, что машины мы получаем в виде объектов, и получить информацию, оперировать ими мы будем именно как объектами.Наглядно это отображено в последовательном выводе комманд
	Получаем объект Датацентра ( в моей конфигурации датацентр один)
PS C:\Logs> Get-Datacenter
Name
----
DATACENTER
	 
	Получаем объекты Хостов датацентра
PS C:\Logs> Get-Datacenter|get-vmhost
Name                 ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz   MemoryUsageGB
----                 --------------- ---------- ------ ----------- -----------   -------------
$hostname     		 Connected       PoweredOn       8         517       18664          12.235
$hostname_2  		 Connected       PoweredOn       8         1049      18664          17.430
	Получаем объект конкретного хоста по его имени
PS C:\Logs> Get-Datacenter|get-vmhost $hostname
Name                 ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz   MemoryUsageGB
----                 --------------- ---------- ------ ----------- -----------   -------------
$hostname 		     Connected       PoweredOn       8         579       18664          12.254
	Получаем объекты виртуальных машин с определенного хоста
PS C:\Logs> Get-Datacenter|get-vmhost $hostname|get-vm
Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
VM_1	             PoweredOff 2        4.000
VM_2  				 PoweredOff 1        2.000
VM_3      		     PoweredOn  1        2.000
VM_4      		     PoweredOn  2        4.000
VM_5       		     PoweredOn  2        2.000
VM_6       		     PoweredOn  1        2.000
VM_7     		     PoweredOn  1        2.000
VM_8  	    	     PoweredOn  1        2.000
	 
	Итак, не будем отвлекаться, займемся миграцией!
	Для того, чтобы в последствии вернуть машины на свои хосты, в vMA приходилось сохранять их названия. Конечно, применение такого способа при использовании PowerCli, мягко говоря является извращением,- мы ведь работаем с объектами! И на для этого мы будем использовать Export-Clixml, позволяющее создать файловое XML представление объекта(объектов).
#Format date for name file
$private:date=(date).tostring().Replace('/','.').Replace(':','.')
#Save VMs to variable
$vms_host=Get-Datacenter| Get-VMHost -Name $hostname_1 |get-vm 
#Export VMs to file
echo $vms_host| Export-Clixml  "$path$hostname shutdown $date" 
	 
	Для миграции используем команду Move-VM, в качестве аргумента передаем виртуальные машины, а в качестве аргумента -Destination указываем целевой хост
Move-VM $vms_host -Destination ( Get-VMHost $general_host )
	 
	При обратной миграции мы можем воспользоваться  Import-Clixml с указанием в качестве аргумента ранее сохраненного файла 
$host_vms=import-Clixml $file
	 
	Выводы
	Содержимое данной статьи демонстрирует базовые возможности и способы использования VmWare PowerCli. На мой взгляд, несмотря на многие  х̶о̶л̶и̶в̶а̶р̶ы̶̶  споры, реализованная в PowerShell объектность является мощным и удобным инструментом, наглядное эффективное применение которой продемонстрировано в данной статье.