PowerShell Friday: bestanden kopiëren met Copy-VMGuestFile
Gepubliceerd op 15 januari 2016 • 3 min leestijd • 430 woorden
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 pass2Wanneer 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
