The (Un)Availability of CPSCOM

Inspired by Andy Zhu’s article explaining how to exclude a server from load balancing, I repeated some of the commands from my earlier article about CPSCOM to explore which interfaces are available.

PS C:\> Get-ChildItem REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | ForEach-Object {$_.GetValue("")} | Where-Object {$_ -like "*CPSCOM*"} | Sort-Object
CPSCOM.CPSSession.1
CPSCOMInterop.CPSApplication.1
CPSCOMInterop.CPSLoadManager.1
CPSCOMInterop.CPSServer.1

Each of these objects can be instantiated using New-Object. Unfortunately, Get-Member does not provide very much information about the usage of the exposed functions:

$session = New-Object -COM CPSCOM.Session.1
$session | Get-Member
$app = New-Object -COM CPSCOMInterop.CPSApplication.1
$app | Get-Member
$lm = New-Object -COM CPSCOMInterop.CPSLoadManager.1
$lm | Get-Member
$server = New-Object -COM CPSCOMInterop.CPSServer.1
$server | Get-Member

Availability of CPSCOM

On one hand, Vishal Ganeriwala has commented on the CDN Community page stating that CPSCOM is an internal interface for use by Citrix and that any third party applications developed using CPSCOM will not be supported by Citrix. On the other hand, a CPSCOM-based script is published on the CDN. I am not sure what to make of this situation. Is there a change of policy about CPSCOM? Will my environment be supported when I implement this script which is based on an unsupported API? What about me changing the script to be able to reverse the effect?

I admit that I am really excited about a new scripting interface hopefully without the quirks of MFCOM. In many presentations, Citrix is announcing a new PowerShell-based SDK for some point in the future but I’d rather see it published sooner than later. The current state of CPSCOM (being unsupported) reminds me a lot of the support policy of MFCOM some years back, when Citrix had a documentation published but did not address issues in the API. And it was a great step when Citrix finally decided to offer full support for MFCOM-based scripts in the case a reproducible error is discovered.

Now, there is a new API for interfacing with Citrix products called CPSCOM in Presentation Server and XenDesktop (which is based on Presentation Server) and, obviously, Citrix deems CPSCOM to be stable enough to use it for the Access Management Console. I’d just love to see it properly documented for partners and customers to use with the necessary support.

References

First Dive Into CPSCOM

Followup: First Dive Into CPSCOM

CDN Community Page about First Dive into CPSCOM

Feedback is always welcome! If you'd like to get in touch with me concerning the contents of this article, please use Twitter.