Como usar o powershell para administrar o Hyper-v Cluser

12

Eu tenho dois hosts com o Server 2016 Datacenter

Em cada host, eu tenho 2 VMs atualmente Dev usando armazenamento compartilhado

Eu posso fazer todas as coisas do cluster, ou seja, Live migrar, mover armazenamento,

Eu tenho procurado em todo o google por um script para salvar todos os vm's no cluster ao mesmo tempo.

Se eu executar isso:

$clusterNodes = Get-ClusterNode;
$Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; }
{save-VM -ComputerName $item.Name; }

Ele salvará a vm, no entanto. Ela me avisará duas vezes sobre os nomes da VM uma vez para cada host.

Meu objetivo é reconfigurar todas as VMs no cluster de um PC, e também as VMs se movimentam muito, então nem sempre estão no mesmo host.

Exemplo:

Salve todos os vm's

Mova o logoff do armazenamento compartilhado:

Set-VM pv02 -SnapshotFileLocation C:\ClusterStorage\Volume1\pv02
Set-VM pv02 -SmartPagingFilePath C:\ClusterStorage\Volume1\pv02
Set-VMHardDiskDrive -VMName  pv02 -ControllerType SCSI -Path C:\ClusterStorage\Volume1\pv02\pv02.vhdx

Inicie a VM

Se eu fizer login em cada host individualmente, o comando será executado corretamente, mas na minha produção eu tenho 7 hosts com cerca de 100 VMs.

    
por Anthony Fornito 07.09.2017 / 19:05

1 resposta

8

Se você quiser abordar todo o cluster a partir do PowerShell, a melhor solução provavelmente é o módulo do PowerShell no System Center Virtual Machine Manager. Foi construído para isso.

O módulo do PowerShell que você está usando era destinado a scripts de host único. Ainda pode ser feito para funcionar. Você pode reestruturar seu código acima. Como exemplo:

$clusterNodeNames = (Get-ClusterNode -Cluster ClusterName).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMsInCluster | Save-VM -Confirm:$false
    
por 07.09.2017 / 19:43