Hyper-V Automatisera VHDx-optimering

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

Hyper-V-Automatisera VHDx-optimering

Ytterligare ett Hyper-V-inlägg efter att jag fick slut på lagring på min Windows 10 Hyper-V-värd.

TLDR: Full Script on GitHub

Tanken här var att skapa ett manus för att köra som skulle städa upp var och en av de virtuella datorerna (men bara de jag ville ha), stänga av dem, komprimera den virtuella hårddiskfilen (VHDx -fil), starta upp den virtuella datorn igen. Jag hade börjat göra detta manuellt efter att ha hittat en blogginlägg från Garth

Hög nivåöversikt av ett exempel:
Hämta alla virtuella datorer på värd som matchar kriterier som den virtuella datorn är på och som VM-namnet (i Hyper-V) inte matchar servern.

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

När vi väl har den informationen går vi lite djupare genom att gå igenom var och en med en ForEach

Foreach ($VM i $VM) {if (Get-VMSnapshot -VMName $VM.Name) {Write-Host "$ ($VM.Name) har Snapshot, ta bort först och kör sedan" -ForegroundColor Yellow} annars {#More Code ... }}

Först kontrollerar vi om det finns en ögonblicksbild, om det finns, går vi vidare till nästa. Visst kan vi också radera ögonblicksbilderna också .. men de kan finnas där av en anledning, och jag vill inte radera dem alla.

Om de inte har en snapshot ... får jag IP -adressen tilldelad den virtuella datorn

$IPAddress = (Get -VM -Name "$ ($VM.Name)" | Välj -ExpandProperty nätverkskort) .IPAddresses | Select -Object -First 1 Write -Host "$ ($VM.Name) | $IPAddress" -ForegroundColor Magenta

Så länge din DNS är korrekt inställd kan du hämta maskinens Windows -namn från DNS. Jag låter den sedan köra ett fjärrstyrt powerhell -skript för att göra sanering. Skriptet finns i variabeln $RemoteScript.

$VMNetName = [System.Net.Dns] :: GetHostByAddress ($IPAddress) .Hostname Skriv -värd "$ ($VM.Name) = $VMNetName | $IPAddress" -ForegroundColor Magenta Invoke -Command -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -ScriptBlock $RemName -StopBox -1

Exempel på fjärrskript som raderar filialer i filialcache och CCM -cacheminne.

$RemoteScript = {Clear -BCCache -Force $CMObject = New -Object -ComObject 'UIResource.UIResourceMgr' $CMCacheObjects = $CMObject.GetCacheInfo () # Radera Cache -objekt $CMCacheObjects.GetCacheObjects. ForEach-Object {$CMCacheObjects.DeleteCacheElement ($_.CacheElementID)}}

När det är klart bekräftar vi att den har en VHDx och inte en genomströmningsenhet och stänger sedan av den virtuella datorn

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

När den virtuella datorn är avstängd optimerar vi den.

ForEach ($VHDXPath in $VHDXPaths) {$SizeBefore = (Get -Item -Path $VHDXPath) .length Write -Host "Size of $ ((Get -Item -Path $VHDXPath) .Name) = $ ($SizeBefore/ Skrivvärden "Optimering av VHD $VHDXPath på $ ($VM.Name)" -ForegroundColor Green Optimize -VHD -Path $VHDXPath -Mode Full $SizeAfter = (Get -Item -Path $VHDXPath) .length $DTPTSA1TBTIZE = $S : $ ($SizeAfter /1GB) GB | Sparar $ ($Diff /1GB) GB "-ForegroundColor Green} Get -VM -Name $VM.Name | Start-VM

När du kör skriptet ser du utdata som, jag har boxat platsbesparingarna. I det här exemplet har jag bara komprimerat VHDx -filerna, jag gjorde ingen rengöring först.

HyperV Optimize 01

Fullständigt manus på GitHub, ta tag i den och redigera den för egna behov.

För att se det i rörelse, kolla in skriptet som körs på YouTube.

HyperV Optimize 01

Om Recast Software
1 av 3 organisationer som använder Microsoft Configuration Manager förlitar sig på Right Click Tools för att visa sårbarheter och åtgärda snabbare än någonsin tidigare.
Ladda ner gratis verktyg
Begär pris

Se hur Right Click Tools förändrar hur system hanteras.

Öka produktiviteten direkt med vår begränsade, kostnadsfria Community Edition.

Kom igång med Right Click Tools idag:

Dela detta:

Support

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.

Kontakt

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.
sv_SESwedish