I wanted to move some policy definitions files from 2012 R2 to a domain joined VM.

I made a zip of the missing files and directly tried to use the new Copy-VMFile cmdlet of the Hyper-V module of Windows 2012 Server R2.

I got a little bit disappointed as my first attempt ended with the following error message:



Copy-VMFile : ‘GuestVMName’ failed to copy file. (Virtual machine ID a4391904-ba6c-462f-99e0-7abd1d90b0a5)

‘PRA406’ failed to initiate copying files to the guest: The device is not ready. (0x80070015). (Virtual machine ID

a4391904-ba6c-462f-99e0-7abd1d90b0a5)

‘GuestVMName’: The ‘Guest Service Interface’ integration service is either not enabled, not running or not initialized.

(Virtual machine ID a4391904-ba6c-462f-99e0-7abd1d90b0a5)

The system cannot process the request at this time.



I thought the integration service weren’t upgraded, so I checked with the following command:

Get-VM | ? State -eq "Running" | Select Name , State , Integrationservicesversion | ft -AutoSize

If I had read more carefully the above message, I’d have found immediately that the ‘Guest Services’ weren’t enabled (confirmed by the UI)



Get-VM -Name GuestVMName | Get-VMIntegrationService

Let’s enable it:

Get-VM -Name GuestVMName | Get-VMIntegrationService | ? { -not ( $_ . Enabled ) } | Enable-VMIntegrationService -Verbose

My second attempt with Copy-VMFile ran like a charm 😎

Copy-VMFile -Name GuestVMName -SourcePath $home\documents\policydefinitions.zip -DestinationPath C:\Users\administrator\documents -FileSource Host