VMware Cloud Community
jamaxwell
Contributor
Contributor

Clipboard (copy/paste) operations not working after upgrade to 4.1

Copy/Paste from my desktop to the VM console via the vSphere client does not work. Guest clipboard doesn't ever get into client's clipboard and vice versa. (See steps to reproduce for details).

ESXi: 4.1.0-260247, vSphere client: 4.1.0-258902

I first noticed this in Lab Manager, but then I verified that its not working through the vsphere client connected directly to the host either. However, the clipboard does work with the 4.1 client connected to a 4.0.0-208111 vcenter server.

Upgrading the guests' VMware tools & hardware version does not help. Happens on both windows & linux guests and multiple varieties of windows clients (haven't tried it from a linux box).

Steps to reproduce:

  1. On client desktop start notepad

  2. type 'desktop' in notepad

  3. Select 'desktop' and copy to clipboard (Ctrl+C)

  4. Open guest console, start notepad

  5. Paste into (guest's) notepad

    1. nothing happens ('desktop' should appear)

  6. type 'guest' in (guest's) notepad

  7. Select 'guest' and copy to clipboard (Ctrl+C)

  8. Paste into client's notepad

    1. 'desktop' appears (should be 'guest')

0 Kudos
26 Replies
Jopo024
Contributor
Contributor

We got the same problem. Upgraded from 4.0 u2 to 4.1 and clipboard functionality stopped working. We tried to force it in VM settings (see below) to no avail:

Name field

Value

isolation.tools.copy.enable

true

isolation.tools.paste.enable

true

isolation.tools.setGUIOptions.enable

true

0 Kudos
thingy
Enthusiast
Enthusiast

We've encountered the same issue.

Did either of you find a workaround?

0 Kudos
jamaxwell
Contributor
Contributor

I haven't found anything. I'm going to call support today, but I wanted to check the forums first to see if anybody else knew anything about it.

0 Kudos
hganesan
VMware Employee
VMware Employee

Please try the following setting in vms vmx file and let know whether it worked.

isolation.tools.copy.disable = "false"

isolation.tools.paste.disable = "false"

0 Kudos
CapiZikus
Contributor
Contributor

Hi,

We also having actually the same issue!, have tried the isolation.tools.copy.disable and isolation.tools.paste.disableand still not working.

Already open a case with vmware, still awaiting for confirmation.

anyone got this fixed?

thanks

0 Kudos
suchindrac
Contributor
Contributor

Are the isolation.tools settings in .vmx file as follows:

isolation.tools.copy.disable = "FALSE"

isolation.tools.paste.disable = "FALSE"

Actually isolation.tools.copy.enable and isolation.tools.paste.enable are not valid settings

0 Kudos
suchindrac
Contributor
Contributor

Oops!

Sorry, didn't notice your answer

0 Kudos
geagle
Contributor
Contributor

Recently upgraded to vSphere v4.1.0 Build 258902 and have the same issue. No copy and pasting to/from a Windows VM Console. Hopefully someone will post a workaround for this, and hopefully the fix won't be an individual modification to every VM.

0 Kudos
CapiZikus
Contributor
Contributor

definatly not able to change vmx file, i got over 2000VMs now Smiley Sad

0 Kudos
MarkStrong
Enthusiast
Enthusiast

Already open a case with vmware, still awaiting for confirmation.

Any reply from VMware support yet?






VCP4 | MCITP | Master ASE | CCNA

VCP5, VCP4 | VCAP4-DCD | MCITP | HP Master ASE | CCNA, Cisco UCS Support Specialist
0 Kudos
CapiZikus
Contributor
Contributor

nope they kind of disapear! will chase them and let you know.

0 Kudos
btebow
Contributor
Contributor

We are having the same issue after going to 4.1, hopefully they have a fix soon

0 Kudos
dhayashi
Contributor
Contributor

Same here - notice no cut and paste after reinstall from ESX 3.5 U5 to ESXi 4.1. I'm running VC 4.1 with VI client running on Windows 7 64 bit.

My old setup had no issues from W7 Client.

Been having a bumpy ride to upgrade to Vsphere 4.1 - made a inquiry on this issue as a side note to a larger problem I'm having with storage views.

System works on the whole - just minus the storage views and cut /paste so far.

-dhayashi

0 Kudos
CapiZikus
Contributor
Contributor

my college just phone up the vmware again and is now officially a bug. let me know if anyone got an update from vmware.

0 Kudos
slogmeister
Contributor
Contributor

Courtesy of Google Translate (Dutch/English)

Dear colleague Any-iT,

Related to vacation, I 1 September unavailable.

In

the case of failure and acute cases, I therefore kindly request you to

contact our office at number 040-2907557, or e-mail: support@Any-iT.nl. Otherwise, I immediately after my absence from your email response. I trust you enough information to have.

Sincerely,

Niels Elfrink

Any-iT

Disclaimer: This e-mail and its contents are confidential. If this message is not intended for you, we ask that you email directly to us to return and destroy. In this case it is also not allowed this email and its contents to use, copy or disclose to third parties. Any-iT

excludes all liability in connection with the incorrect, incomplete or

not timely reception of the information in this email.

0 Kudos
jamaxwell
Contributor
Contributor

In our environment, adding:

isolation.tools.copy.disable = "FALSE"
isolation.tools.paste.disable = "FALSE"

to the vmx file fixed the problem for VMs in Lab Manager (both from the web console and the vsphere client), so I imagine it would work for everything else (we're only using 4.1 for our lab manager environment at the moment). Currently writing a script to add that to all the vmx files.

Thanks everybody!

0 Kudos
CapiZikus
Contributor
Contributor

Could you let me know the script when you got them please Smiley Happy

0 Kudos
tWiZzLeR
Enthusiast
Enthusiast

In our environment, adding:

bq. isolation.tools.copy.disable = "FALSE"
isolation.tools.paste.disable = "FALSE"

to the vmx file fixed the problem for VMs in Lab Manager (both from the web console and the vsphere client), so I imagine it would work for everything else (we're only using 4.1 for our lab manager environment at the moment). Currently writing a script to add that to all the vmx files.

Thanks everybody!

This worked for me as well. Please let us know if you are able to get a script working!

0 Kudos
jimmyrb
Contributor
Contributor

Script put together by one of our devs - cycles through all datastores (or whichever ones are picked up by the name filter) and adds the parameters to any .vmx files it finds. Won't add them twice, and if they're currently set to true it'll switch them to false. Goes through the datastores rather than vCenter since many of our VMs aren't in vCenter.

Of course it should be easy enough for anyone who wants to customise this to change other parameters. The main bits to change to get it to work are the datastore name - remove this for it to apply to all datastores, and the url. It uses the web api.

$credentials = Get-Credential

Get-DataStore -name "<regular expression>" | ForEach-Object {

$dsName = $_.Name
$dsDriveName = "LUN" + $_.Name 
$dsPath = $dsDriveName + ":"
$drive = New-DatastoreDrive -Name $dsDriveName -Datastore $_ 

Get-ChildItem $dsPath -Recurse -Include "*.vmx" | ForEach-Object { 

$filePath = $_.DataStoreFullPath.Replace("[$dsName] ", "")
$fileUrl = "https://<esx-server>/folder/" + $filePath + "?dcPath=ha-datacenter&dsName=" + $dsName

$getReq = [http://System.Net.WebRequest]::Create($fileUrl)
$getReq.Method = "GET"
$getReq.Proxy = [http://System.Net.WebProxy]::GetDefaultProxy()
$getReq.Proxy.UseDefaultCredentials = $true
$getReq.Credentials = $credentials

[http://Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} 

$getResponse = $getReq.GetResponse()

$rdr = New-Object System.IO.StreamReader $getResponse.GetResponseStream()
$vmxFile = @()
while($rdr.Peek() -ne -1) {
$vmxFile += $rdr.ReadLine()
}
$getResponse.Close()

for($i=0;$i -lt $vmxFile.Length;$i++) {
if($vmxFile[$i] -ne $null -and $vmxFile[$i].Contains("isolation.tools.copy.disable")) {
$vmxFile[$i] = $null
}    
if($vmxFile[$i] -ne $null -and $vmxFile[$i].Contains("isolation.tools.paste.disable")) {
$vmxFile[$i] = $null
}
}



$vmxFile += "isolation.tools.copy.disable = ""FALSE"""
$vmxFile += "isolation.tools.paste.disable = ""FALSE"""

$putReq = [http://System.Net.WebRequest]::Create($fileUrl)
$putReq.Method = "PUT"
$putReq.PreAuthenticate=$true
$putReq.Credentials = $credentials
$putReq.ContentType = "application/octet-stream"



$ms = New-Object System.IO.MemoryStream 
$wtr = New-Object System.IO.StreamWriter $ms
$vmxFile | Where-Object { -not [http://System.String]::IsNullOrEmpty( $_ ) } | ForEach-Object { $wtr.WriteLine( $_ ) }
$wtr.Flush()
$ms.Flush()

$putReq.ContentLength = $ms.Length
$requestStream = $putReq.GetRequestStream()

$wtr = New-Object System.IO.StreamWriter $requestStream
$vmxFile | Where-Object { -not [http://System.String]::IsNullOrEmpty( $_ ) } | ForEach-Object { $wtr.WriteLine( $_ ) }
$wtr.Flush()
$requestStream.Flush()
$requestStream.Close()        

$putResponse = $putReq.GetResponse()
$putResponse.Close()

}
}

As a note of warning - this can put a heavy load on your server's soap API, and is best run on a single datastore at a time, during low usage periods.

To second this warning, we just attempted to run this across a large selection of datastores and managed to kill off vpxd with a flood of requests. Best to keep it down to one datastore at a time, or build a delay in before each request runs.

0 Kudos