Ottimizzazione automatica di Hyper-V VHDx

<img style="”float:" right;” src="”https://www.recastsoftware.com/wp-content/uploads/2021/10/Recast-Logo-Dark_Horizontal.svg”" alt="&quot;Immagine&quot;" height="”43″" width="”150″">

Hyper-V – Ottimizzazione automatica VHDx

Un altro post su Hyper-V dopo che ho esaurito lo spazio di archiviazione sul mio host Hyper-V Windows 10.

TLDR: Script completo attivato GitHub

L'idea qui era di creare uno script da eseguire che avrebbe ripulito ciascuna delle VM (ma solo quelle che volevo), spegnerle, compattare il file del disco rigido virtuale (file VHDx), riavviare la VM. Avevo iniziato a farlo manualmente dopo aver trovato un post sul blog di Garth

Panoramica di alto livello di un esempio:
Ottieni tutte le macchine virtuali sull'host che soddisfano i criteri per cui la macchina virtuale è attiva e il nome della macchina virtuale (in Hyper-V) non corrisponde al server.

$VM = Get-VM | Where-Object {$_.State -eq "Running" -and $_.Name -notmatch "Server"}

Una volta ottenute queste informazioni, andiamo un po' più in profondità scorrendo ognuna di esse utilizzando un ForEach

Foreach ($VM in $VMs) { if (Get-VMSnapshot -VMName $VM.Name){ Write-Host "$($VM.Name) ha SnapShot, prima rimuovi e poi riesegui" -ForegroundColor Yellow } else{ #More Code... } }

Per prima cosa controlliamo se c'è uno snapshot, se c'è, passiamo a quello successivo. Certo, potremmo eliminare automaticamente anche le istantanee .. ma potrebbero essere lì per un motivo, e non voglio eliminarle tutte per volere o no.

Se non hanno un'istantanea... ottengo l'indirizzo IP assegnato alla VM

$IPAddress = (Get-VM -Name "$($VM.Name)" | Selezionare -ExpandProperty networkadapters).IPAddresses | Select-Object -First 1 Write-Host "$($VM.Name) | $IPAddress" -ForegroundColor Magenta

Quindi, finché il tuo DNS è configurato correttamente, puoi ottenere il nome di Windows della macchina dal DNS. Quindi faccio eseguire uno script PowerShell remoto per eseguire la pulizia. Lo script si trova nella variabile $RemoteScript.

$VMNetName = [System.Net.Dns]::GetHostByAddress($IPAddress).Hostname Write-Host "$($VM.Name) = $VMNetName | $IPAddress" -ForegroundColor Magenta Invoke-Command -ScriptNet StopBlock -Comp2rMTRemozioni

Esempio di script remoto che elimina Branch Cache e CCM Cache Items.

$RemoteScript = { Clear-BCCache -Force $CMObject = New-Object -ComObject 'UIResource.UIResourceMgr' $CMCacheObjects = $CMObject.GetCacheInfo() # Elimina elemento cache $CMCacheObjects.GetCacheElements() | ForEach-Object { $CMCacheObjects.DeleteCacheElement($_.CacheElementID) } }

Una volta fatto, confermiamo che ha un VHDx e non un'unità passthrough, quindi spegni la VM

$VHDXPaths = $VM.HardDrives.path | Where-Object {$VM.HardDrives.DiskNumber -eq $null} if ($VHDXPaths){ Get-VM -Name $VM.Name | Stop-VM -Forza

Una volta spenta la VM, la ottimizziamo.

ForEach ($VHDXPath in $VHDXPaths) { $SizeBefore = (Get-Item -Path $VHDXPath).length Write-Host " Dimensione di $((Get-Item -Path $VHDXPath).Name) = $ Green($Size"-Fore/1GBground) Write-Host " Optimizing VHD $VHDXPath on $($VM.Name)" -ForegroundColor Green Optimize-VHD -Path $VHDXPath -Mode Full $SizeAfter = (Get-Item -Path $VHDXPath).length $DiffizeBefore = $SizeAfter2TS : $($SizeAfter/1GB) GB | Salvataggio di $($Diff /1GB) GB" -ForegroundColor Green } Get-VM -Name $VM.Name | Start-VM

Durante l'esecuzione dello script, vedrai un output del tipo, ho inserito il risparmio di spazio. In questo esempio ho solo compattato i file VHDx, non ho fatto prima alcuna pulizia.

Ottimizzazione HyperV 01

Script completo attivato GitHub, prendilo e modificalo per le tue esigenze.

Per guardarlo in movimento, controlla lo script in esecuzione su YouTube.

Ottimizzazione HyperV 01

Circa Recast Software
1 organizzazione su 3 che utilizza Microsoft Configuration Manager si affida a Right Click Tools per far emergere le vulnerabilità e rimediare più rapidamente che mai.
Scarica strumenti gratuiti
Richiedi prezzi

Scopri come Right Click Tools sta cambiando il modo in cui vengono gestiti i sistemi.

Aumenta immediatamente la produttività con la nostra Community Edition limitata e gratuita.

Inizia oggi con Right Click Tools:

Condividi questo:

Supporto

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Contatti

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.
it_ITItalian