Hyper-V 2012 R2 Copy-VMFile - jak dostat soubor z hostitele do virtuálního stroje jednoduše?

Ondřej Výšek
2 minuty, 22 sekundy
1

Windows Server 2012 R2 Hyper-V přináší novou možnost přenosu souborů mezi hostitelem (fyzickým strojem) a virtuálním strojem. Pro tento přenos se využívá integračních komponent - resp. jedné části, která se skrývá pod názvem “Guest Services”. Tato možnost při vytvoření nového virtuálního stroje není povolena, je tedy nutné zapnout v konfiguraci VM v části integračních služeb. Kopírování souborů je možné z Windows 8.1, Windows Server 2012R2 a Hyper-V server 2012 R2, kopírovat je možné i do starších operačních systémů za splnění 2 předpokladů:

  1. Nainstalované integrační komponenty odpovídající podkladovému hypervizoru (Windows 8.1 nebo server 2012R2)
  2. povolené “Guest services” v konfiguraci integračních komponent

Jak zjistit verzi integračních komponent pomocí PowerShell:

 Get-VM | ft Name,IntegrationServicesVersion, IntegrationServicesState

Výstup může vypadat takto:

Výpis virtuálních strojů s povolenými Guest Services je možné např. pomocí PowerShell:

Get-VM | Get-VMIntegrationService -name "Guest Service Interface"

Výstup může vypadat takto (Guest Services jsou povoleny pro DEMO-DC a DEMO-WXP):

Pokud bychom pomocí PowerShell chtěli vypsat pouze ty virtuální stroje, jenž nemají povoleny Guest services, pak je možné použít:

Get-VM | Get-VMIntegrationService -name "Guest Service Interface" | where Enabled -eq $false

Výstup může vypadat takto:

Na závěr, nezbývá nežli povolit Guest Services u virtuálních strojů, které nemají povoleno pomocí PowerShell takto:

Get-VM | Get-VMIntegrationService -name "Guest Service Interface" | where Enabled -eq $false | Enable-VMIntegrationService

Pokud následně vypíšeme seznam strojů s povolenými Guest Services:

Nutno podotknout, že je nutný restart virtuálního stroje, tedy stroje, jenž jsou uloženy nebo běží musí být restartovány.

Kopírování souborů do virtuálního stroje

Pro tuto operaci není dostupné grafické rozhraní, je tedy nutné použít PowerShell:

Copy-VMFile -VMName demo-wxp -FileSource host -SourcePath .\WS2012_processors.mp4 -DestinationPath c:\demo.mp4

Proces pak bude vypadat následovně:

A výstup ve virtuálním stroji:

Jenom drobný příklad automatizace pomocí PowerShell:

Copy-VMFile -VMName demo-wxp,demodc -FileSource host -SourcePath .\WS2012_processors.mp4 -DestinationPath c:\demo.mp4
Get-VM | where State -eq "Running" | Copy-VMFile -FileSource host -SourcePath .\WS2012_processors.mp4 -DestinationPath c:\demo.mp4

Kde první příklad: proveď Copy-VMFile na virtuální stroje demo-wxp a demodc.

Druhý příklad: proveď Copy-VMFile na všechny virtuální stroje, které jsou spuštěny (pokud se pokusíte kopírovat na VM, který není spuštěný, vcelku logicky je zobrazena chyba).

Je samozřejmě možné spouštět Copy-VMFile i na vzdáleném serveru zadáním parametru -ComputerName, či spustit jako úlohu na pozadí pomocí parametru -AsJob. Kompletní seznam parametrů je k dispozici na Microsoft TechNet

Autor: Ondřej Výšek

Ondřej je Microsoft MVP od roku 2004, v roce 2008 založil komunitní web optimalizovane-it.cz. Za svou IT karieru, jenž započala v roce 1993 prošel celou řadou pozic, od konzultanta, přes architekt, až po vytváření vizí a strategií zákazníků. V prostředích, ve kterých pomáhal byly desítky, ale i stovky tisíc uživatelů a systémů. V posledních letech se zabývá především cloudovými technologiemi Microsoft 365 a Azure ve společnosti KPCS CZ.

Následující článek Předchozí článek