After being a part of a few email threads and discussions about Citrix not following the traditional
name-verb cmdlet naming scheme I thought I would make a post with my take on that.
Basically, Citrix joined companies like Microsoft, VMware and Quest and is also trying to PowerShell-enable all of their products. However, they chose to not follow the standard naming scheme and went with a few of their own.
The ones for Provisioning Server are just bad: They user verb instead of a noun, prefix instead of a verb, and noun instead of a parameter.
So instead of:
Add-Device – they have:
XenServer ones are slightly better (verb is where it is supposed to be) but nouns get colons and dots – something no other company in the world is using:
I think I understand why XenServer guys are designing their cmdlets that way – they simply try to workaround the namespaces issue which PowerShell has (see my blog post about that and vote for the bug on the connect site)
Basically, they want to make sure that their cmdlets don’t produce naming conflicts if administrators also have VMware and Microsoft cmdlets on the same box.
We had the same issue with our AD cmdlets and are using QAD prefix for every noun: e.g.
So I totally agree that the issue exists but I urge Citrix and other companies to not try to workaround it in a way so inconsistent with what everyone else is doing. We will simply do a very bad service to administrators who have to manage more that one system. Consistency is key to the success of PowerShell and I hope we can maintain that.
To Microsoft: As vendors start adopting PowerShell we will be getting increasingly more issues like that, so please:
- Consider enforcing naming standards in PowerShell and Visual Studio templates or at least (if the fear of losing backwards compatibility is strong) make sure that compilation and snapin registration produce warnings if non-standard cmdlet names are used.
- Please provide a viable way of handling cmdlet naming conflicts. Administrators should be able to easily avoid these and get predictable results.
- Please get back to the standard Verb-Noun (or Verb-PrefixNoun) notation.
- Consider giving your snapins short names so your aministrators could use:
Get-VMif there’s no conflict) rather than