PowerShell Friday: bestanden kopiëren met Copy-VMGuestFile

Gepubliceerd op 15 januari 2016 • 3 min leestijd • 430 woorden
Zo nu en dan kun je de situatie tegenkomen dat je een bestand hebt dat naar een willekeurig aantal virtuele machines moet worden gedistribueerd. Nu…
PowerShell Friday: bestanden kopiëren met Copy-VMGuestFile

Zo nu en dan kun je de situatie tegenkomen dat je een bestand hebt dat naar een willekeurig aantal virtuele machines moet worden gedistribueerd. Nu kunt u inloggen op deze servers en het bestand handmatig kopiëren en voor misschien een handvol virtuele machines is dit haalbaar. Maar om het jezelf makkelijker te maken kun je ook gebruik maken van Powershell met Copy-VMGuestFile.

Met Powershell kunt u gebruik maken van de cmdlet genaamd Copy-Item om gegevens uit te wisselen tussen uw bron en bestemming.


Copy-Item -Path '\\\\target\\share$\\test.txt' -Destination 'c:\\temp\\'

Deze cmdlet kan in de meeste situaties worden gebruikt, maar wat als uw netwerk nog niet beschikbaar is voor de virtuele machine. Of misschien bevindt de bron of bestemming zich in de DMZ?

Copy-VMGuestFile-cmdlet  

Voor dit soort situaties kunt u ook gebruik maken van de opdracht Copy-VMGuestFile PowerCLI. Met deze cmdlet kan een beheerder gegevens uitwisselen tussen bron en bestemming via het gebruik van de vSPhere API en de VMware-tools.

Wanneer u de Copy-VMGuestFile-cmdlet gebruikt, bent u gedwongen minstens een paar parameters te gebruiken:

  • Bron
  • Bestemming
  • VM
  • Richting (GuestToLocal of LocalToGuest)
  • HostGebruiker en HostWachtwoord
  • Gastgebruiker en gastwachtwoord

Als u bijvoorbeeld het tekstbestand “test.txt” van uw lokale schijf naar de map “c:\temp” op de virtuele gastmachine met de naam “myVM” wilt kopiëren, kunt u deze opdracht gebruiken:

Copy-VMGuestFile -Bron c:\test.txt -Bestemming c:\temp\ -VM myVM -LocalToGuest -HostUser root -HostPassword pass1 -GuestUser gebruiker -GuestPassword pass2

Voor een omgekeerde taak hoeft u alleen de parameter aan te passen van -LocalToGuest naar GuestToLocal

Copy-VMGuestFile -Bron c:\test.txt -Bestemming c:\temp\ -VM myVM -GuestToLocal -HostUser root -HostPassword pass1 -GuestUser gebruiker -GuestPassword pass2

Dit werkt nu prima als u gegevens van of naar een enkele virtuele machine moet kopiëren. Maar misschien moet u deze actie op meerdere servers herhalen. Dan kun je gebruik maken van een piped input zoals beschreven in eerdere artikelen.

U bevindt zich bijvoorbeeld in een organisatie die tnsnames.ora gebruikt om databasenamen om te zetten. Er is een nieuwe database aan uw omgeving toegevoegd en u wilt alle virtuele machines bijwerken met een nieuw tnsnames.ora-bestand. En dit moet worden toegepast op alle virtuele machines die beginnen met de naam VM.


Powershell
$vm = Get-VM -Name VM\*  | Copy-VMGuestFile -Source c:\\tnsnames.ora -Destination c:\\MyFolder -VM $vm -LocalToGuest -GuestUser -GuestPassword pass2

Wanneer u deze cmdlet gebruikt, zorg er dan voor dat u rekening houdt met de volgende beveiligingsbultjes:

  • Het gastgebruikersaccount met de juiste rechten op het bestand en/of de map
  • Controleer of Gebruikersaccountbeheer (UAC) u niet verhindert gegevens te schrijven of te lezen

Zie ook

    Follow me