I've written this script to utilize MCLI.exe to add a comment to the newest version of a vDisk and have marked which fields correspond to what.
"C:\Program Files\Citrix\Provisioning Services\MCLI.exe" get diskversion -p disklocatorname=XenApp65Tn03 sitename=SHW storename=XenApp | FINDSTR /i /C:"version" > %TEMP%\diskver.txt
FOR /F "tokens=1-2 delims=: " %%A IN ('type %TEMP%\diskver.txt') DO set VERSIONN=%%B
"C:\Program Files\Citrix\Provisioning Services\MCLI.exe" set diskversion -p version=%VERSIONN% disklocatorname=XenApp65Tn03 sitename=SHW storename=XenApp -r description="Test"
This script can now be added to the "PVS Automatic" update feature to automatically comment the latest vDisk when it is updated.
Tuesday, July 16, 2013
Thursday, July 11, 2013
Wednesday, July 10, 2013
Troubleshooting Audio issues in Citrix XenApp
We recently ran across an issue with XenApp 6.5 where we were publishing an application that required the "Beep" but it wasn't working. The following is the troubleshooting steps I did to enable audio to work on that application.
First we created a Citrix policy to enable audio. This policy looked like so:
We filtered on a user security group to enable the client audio redirection and added that filter group to the application. From the original appearance of things, this should have been sufficient to enable client redirection. But it did not. So I wanted to verify that the policy was actually applying to the user account. To do that, you login to the system with a user account and check in Regedit for the value "AllowAudioRedirection". If it's set to 0x1 then the Citrix group policy has evaluated that client redirection should be enabled for your session.
Unfortunately, I still did not have audio redirection working...
Citrix advises that you can use dbgview.exe to further troubleshoot the Citrix Receiver to assist. I launched dbgview.exe and started the trace and launched the application from the Webinterface.
"00000043 0.60113800 [7752] CAMSetAudioSecurity: Wd_FindVdByName failed"
CAM is a virtual channel (Virtual Channel Priority for Audio) and we can see it's failing. I then used the Citrix ICA creator and launched the application using that. The dbgview for that output looks like so:
00000013 0.44386363 [4496] CAMSetAudioSecurity: success
We can see that the audio virtual channel was able to successfully latch and I confirmed I had audio in the application.
From here the issue appeared to be when I launched the application from the webinterface or desktop shortcut. I then compared the two ICA files, the one from the web interface and the one I created separately to see what was different. The difference was glaringly obvious. The working ICA file had "ClientAudio=On" and the broken one had "ClientAudio=Off".
Curious, I launched AppCenter and clicked through the applications settings and saw the following:
"Enable legacy audio" was unchecked. I checked it and then logged off and logged back on the web interface and when I downloaded the ICA file, "ClientAudio=On" and I had audio. I then unchecked that setting and confirmed it manipulated the ICA file as with it unchecked the ICA file generated had "ClientAudio=Off"
Who knows why it's called "legacy audio". May as well just call that option "Enable audio" as that would be more accurate. The Citrix documents on this setting says the following:
http://support.citrix.com/proddocs/topic/xenapp6-w2k8-admin/ps-sessions-en-dis-aud-pubapp-v2.html
To enable or disable audio for published applications
First we created a Citrix policy to enable audio. This policy looked like so:
We filtered on a user security group to enable the client audio redirection and added that filter group to the application. From the original appearance of things, this should have been sufficient to enable client redirection. But it did not. So I wanted to verify that the policy was actually applying to the user account. To do that, you login to the system with a user account and check in Regedit for the value "AllowAudioRedirection". If it's set to 0x1 then the Citrix group policy has evaluated that client redirection should be enabled for your session.
Unfortunately, I still did not have audio redirection working...
Citrix advises that you can use dbgview.exe to further troubleshoot the Citrix Receiver to assist. I launched dbgview.exe and started the trace and launched the application from the Webinterface.
"00000043 0.60113800 [7752] CAMSetAudioSecurity: Wd_FindVdByName failed"
CAM is a virtual channel (Virtual Channel Priority for Audio) and we can see it's failing. I then used the Citrix ICA creator and launched the application using that. The dbgview for that output looks like so:
00000013 0.44386363 [4496] CAMSetAudioSecurity: success
We can see that the audio virtual channel was able to successfully latch and I confirmed I had audio in the application.
From here the issue appeared to be when I launched the application from the webinterface or desktop shortcut. I then compared the two ICA files, the one from the web interface and the one I created separately to see what was different. The difference was glaringly obvious. The working ICA file had "ClientAudio=On" and the broken one had "ClientAudio=Off".
Curious, I launched AppCenter and clicked through the applications settings and saw the following:
"Enable legacy audio" was unchecked. I checked it and then logged off and logged back on the web interface and when I downloaded the ICA file, "ClientAudio=On" and I had audio. I then unchecked that setting and confirmed it manipulated the ICA file as with it unchecked the ICA file generated had "ClientAudio=Off"
Who knows why it's called "legacy audio". May as well just call that option "Enable audio" as that would be more accurate. The Citrix documents on this setting says the following:
http://support.citrix.com/proddocs/topic/xenapp6-w2k8-admin/ps-sessions-en-dis-aud-pubapp-v2.html
To enable or disable audio for published applications
If you disable audio for a published application, audio is not available within the application under any condition. If you enable audio for an application, you can use policy settings and filters to further define under what conditions audio is available within the application.
Emphasis is mine.
Anyways, and now we have our applications with working audio and everything seems to be good again :)
To summarize the enable audio for a XenApp application you must:
1) Enable "legacy" audio
2) Enable a Citrix policy to configure audio redirection
3) Done.
- In the Delivery Services Console, select the published application for which you want to enable or disable audio, and select Action > Application properties.
- In the Application Properties dialog box, click Advanced > Client options. Select or clear the Enable legacy audio check box.
Emphasis is mine.
Anyways, and now we have our applications with working audio and everything seems to be good again :)
To summarize the enable audio for a XenApp application you must:
1) Enable "legacy" audio
2) Enable a Citrix policy to configure audio redirection
3) Done.
Monday, July 08, 2013
Powershell script to manipulate "Register this connection's addresses in DNS"
We run a multihome NIC setup with our Citrix PVS servers and the "Provisioning" Network is a seperate VLAN that is only used by the PVS servers and goes no where. Unfortunately, however, the "Provision" NIC can register itself in the DNS, causing devices outside of the Provisioning network (everyone) to resolve to the incorrect address. To resolve this I ran this script across all my vDisks to remove the ability of the provision network to register itself as available in DNS.:
$provNic=Get-WmiObject Win32_NetworkAdapter -filter 'netconnectionid ="Provision"'
$prodNic=Get-WmiObject Win32_NetworkAdapter -filter 'netconnectionid ="Production"'
$adapters=Get-WmiObject Win32_NetworkAdapterConfiguration -filter 'IPEnabled=TRUE'
foreach($adapter in $adapters) {
if ($prodNIC.name -eq $adapter.Description) {
$adapter.SetDynamicDNSRegistration($true,$false)
}
if ($provNIC.name -eq $adapter.Description) {
$adapter.SetDynamicDNSRegistration($false,$false)
}
}
As you can see above, we have two NICs, "Provision" and "Production". We do not want "Provision" registerted so it gets the $false,$false set, whereas "Production" gets $true,$false.
$provNic=Get-WmiObject Win32_NetworkAdapter -filter 'netconnectionid ="Provision"'
$prodNic=Get-WmiObject Win32_NetworkAdapter -filter 'netconnectionid ="Production"'
$adapters=Get-WmiObject Win32_NetworkAdapterConfiguration -filter 'IPEnabled=TRUE'
foreach($adapter in $adapters) {
if ($prodNIC.name -eq $adapter.Description) {
$adapter.SetDynamicDNSRegistration($true,$false)
}
if ($provNIC.name -eq $adapter.Description) {
$adapter.SetDynamicDNSRegistration($false,$false)
}
}
As you can see above, we have two NICs, "Provision" and "Production". We do not want "Provision" registerted so it gets the $false,$false set, whereas "Production" gets $true,$false.
Tuesday, June 11, 2013
How to enable "Adaptive Display" in XenApp 6.5
Contrary to the documentation in the Group Policy settings for Citrix, XenApp requires the following settings configured for Adaptive Display to be enabled:
User settings
Minimum Image Quality
This setting specifies the minimum acceptable image quality for Adaptive Display. The less compression used, the higher the quality of images displayed. Choose from Ultra High, Very High, High, Normal, or Low compression.
By default, this is set to Normal.
Moving Image Compression
This setting specifies whether or not Adaptive Display is enabled. Adaptive Display automatically adjusts the image quality of videos and transitional slides in slide shows based on available bandwidth. With Adaptive Display enabled, users should see smooth-running presentations with no reduction in quality.
By default, this is set to Enabled.
Target Minimum Frame Rate
This setting specifies the minimum frame rate you want. The minimum is a target and is not guaranteed. Adaptive Display automatically adjusts to stay at or above this setting where possible.
By default, this is set to 10 frames per second.
Progressive Compression Level
Set to Disabled
Even though the GPO's state these only apply to XenDesktop, they also apply to XenApp and can be confirmed if you publish HDX Monitor 3.0 on a XenApp server and monitor the ICA session, you can see the transient quality increasing or decreasing depending on your scenario.
User settings
Minimum Image Quality
This setting specifies the minimum acceptable image quality for Adaptive Display. The less compression used, the higher the quality of images displayed. Choose from Ultra High, Very High, High, Normal, or Low compression.
By default, this is set to Normal.
Moving Image Compression
This setting specifies whether or not Adaptive Display is enabled. Adaptive Display automatically adjusts the image quality of videos and transitional slides in slide shows based on available bandwidth. With Adaptive Display enabled, users should see smooth-running presentations with no reduction in quality.
By default, this is set to Enabled.
Target Minimum Frame Rate
This setting specifies the minimum frame rate you want. The minimum is a target and is not guaranteed. Adaptive Display automatically adjusts to stay at or above this setting where possible.
By default, this is set to 10 frames per second.
Progressive Compression Level
Set to Disabled
Even though the GPO's state these only apply to XenDesktop, they also apply to XenApp and can be confirmed if you publish HDX Monitor 3.0 on a XenApp server and monitor the ICA session, you can see the transient quality increasing or decreasing depending on your scenario.
Subscribe to:
Posts (Atom)

