[CmdletBinding()] Param( [Parameter(Mandatory)] [string]$VMName, [Parameter(Mandatory)] [string]$VSphereFQDN, [Parameter(Mandatory)] [string]$VSphereUsername, [Parameter(Mandatory)] [string]$VSpherePassword ) $PowerCliConfigurationSplat = @{ Scope = 'User' ParticipateInCEIP = $False Confirm = $False InvalidCertificateAction = 'Ignore' } Set-PowerCLIConfiguration @PowerCliConfigurationSplat $ConnectVIServerSplat = @{ Server = $VSphereFQDN User = "$VSphereUsername" Password = "$VSpherePassword" WarningAction = 'SilentlyContinue' } Connect-VIServer @ConnectVIServerSplat | Out-Null $GetVMSplat = @{ Name = $VMName } $VM = Get-VM @GetVMSplat $GetHarddiskSplat = @{ VM = $VM } $Harddisk = Get-Harddisk @GetHarddiskSplat $VMFolder = ($Harddisk.Filename.Substring(0, $Harddisk.Filename.LastIndexOf('/')) -split ' ')[1] $NewDatastoreDriveSplat = @{ Name = 'ds' Datastore = ($VM | Get-Datastore) } New-DatastoreDrive @NewDatastoreDriveSplat $CopyDatastoreItemSplat = @{ Item = "ds:\$($VMFolder)\*.vmdk" Destination = (Get-Item $PWD) } Copy-DatastoreItem @CopyDatastoreItemSplat Disconnect-VIServer * -Confirm:$False