Echanger des fichiers entre serveur Hyper-V et machines virtuelles

C’est une question récurrente depuis des années : comment échanger des fichiers avec une machne virtuelle ? Si celle-ci est connectée sur le réseau physique il n’y a en général pas de problème, on peut passer par le partage de fichiers classiques, voire par le protocole RDP. Par contre nous avons souvent des machines virtuelles sans connexion réseau ou connectée à un réseau privé sans connexion avec le serveur hôte. Dans ce cas j’ai souvent dû passer par des images ISO de DVD, voire des images de disquettes, ou plus récemment par des VHDX.

Avec Hyper-V dans Windows Server 2012 R2 et Windows 8.1, nous avons maintenant deux manières d’échanger des fichiers avec une VM : la première utilise le protocole RDP implémenté dans le nouveau VMConnect, la seconde passe directement par les Integration Services et la nouvelle commande PowerShell Copy-VMFile.

Pour la première solution, elle utilise l’implémentation du protocole RDP dans le nouveau VMConnect (le client qui donne accès à la console de la VM). Celui-ci peut maintenant utiliser RDP directement via le VMBus, à condition que l’option soit activée dans Hyper-V et que l’OS de la VM le supporte. Le paramètre dans Hyper-V se trouve à ces deux endroits des “Hyper-V Settings” :

image image

L’OS de la VM doit être Windows Server 2012 R2 ou Windows 8.1. Bien que ce nouvel “Enhanced Session Mode” utilise le protocole RDP, il n’est pas besoin que la VM soit connectée à un réseau pour que cela fonctionne. Et comme dans toute session RDP, il suffit de passer par du copier-coller dans l’explorateur Windows pour échanger des fichiers dans les deux sens.

Mais ce n’est pas tout, puisque l’utilisation d’RDP permet aussi, entre autres, la redirection de l’audio, des imprimantes, du presse-papier, des cartes à puces, des lecteurs de disques, des périphériques USB… Mais c’est une autre histoire.

La deuxième solution pour l’échange de fichiers utilise les Integration Services d’Hyper-V. Elle utilise une nouvelle option dans les paramètres d’une VM, dans “Integration Services”, appelée “Guest Services”. Cette option est désactivée par défaut.

image

L’option peut également s’activer en PowerShell :

Enable-VMIntegrationService -VMName ma_vm -Name "Guest Service Interface"

Ensuite on utilise la commande Copy-VMFile pour échanger des fichiers :

image

Par exemple, pour copier un fichier du serveur hôte vers la VM :

Copy-VMFile -Name ma_vm -SourcePath c:\temp\test.txt -DestinationPath c:\temp\test.txt -FileSource Host -CreateFullPath

L’option -FileSource n’accepte que la valeur Host, ce qui semble indiquer que la copie n’est possible que dans le sens de l’hôte Hyper-V vers la VM. Cela dit, ce n’est peut-être qu’une limitation de la Preview et je mettrai à jour cet article dès que j’aurai plus d’informations.

Pour plus d’informations :

Vous pouvez également nous retrouver dès la rentrée pour nos IT Camps près de chez vous :