I'm looking for an easy way to integrate cluster mode scripts and 7-mode scripts into one powershell script. My goal is to make it as easy as possible on some of our operations support. If I can combine the scripts so that the script determines what the mode is, and runs the proper scripts.
For Example, the user running the script gets prompted for the filername. The script then goes out an determines the version of that filer, and then either gets more information from the user based on that information, or runs the proper script for cluster/7-mode.
I hope I explained what I am looking for well. I would like to see out other people are dealing with this problem, or if they are just living with separate scripts for everything.
My current plans for this is to write a new script module that determines which cmdlet to call. For instance, I'll write an advanced function called Get-Volume. THe function will determine which cmdlet to call (7-mode or C-mode) and return the results. This way, my scripts will always call the same function and won't need to be updated for 7/c mode.
Admittedly, what would be nice is for NetApp to smush the cmdlets together so we only have to call one cmdlet for either system...
That is the direction I wanted to go when architecting the cDOT cmdlets. But I quickly realized that not only are some of the APIs different, but many of the returned object types are radically different. So a combined Get-Volume would not only have to call different APIs but also remix the data into common structures. From our perspective, cDOT will see new development indefinitely whereas the 7-mode products won't, so having the separability in the cmdlets lets us maintain them for the long term much more easily.
That makes good sense, and I understand the approach from your perspective. The bummer is there are many of us who will be supporting a mixed CDOT and 7-mode environment for years and will have to come up with a solution in the meantime.
Fortunately, Powershell is fairly powerful and it's farily forgiving when you reference properties that don't exist on an object, so a script writer monkeying up something for their specific purposes is perfectly doable.