PVS Automatic vDisk Update Script
Description
This workflow allows for automatic updates of vDisks on a scheduled or on-call basis.
It uses a dedicated machine as an "updater" to make the process hypervisor/device agnostic, and allows for someone without dedicated PVS admin abilities to update the vDisk, as well as give it a "personality" to run scripts that aren't executed on other machines, such as copying files or running update processes.
The script:
- Restarts the updater machine with a standard vDisk to free up the Update vDisk ("standby")
- Makes a copy of the standby vDisk
- Imports and turns the copy standby into standard
- Increments the standby disk versioning and forces PVS to recognize the update
- Restores the standby disk to the update machine to continue gathering updates
The script requires no manual intervention, and can be scheduled nightly, weekly, or any other required time basis. The older disk is preserved, allowing for simple rollback, and disks are datestamped to allow for easy identification.
Required Activity Libraries
The standard Windows activity library is required for this, v. 1.0.0.0 . It can be obtained through Citrix.com
Download
Click the link below to download the workflow, then go to the Workflows section of Workflow Studio and import the file:
Follow the instructions in the Readme.txt file for configuration and setup. If you have any issues, please leave a comment here or contact me on Twitter @mcbogo.
Disclaimer
These software applications are provided to you as is with no representations, warranties or conditions of any kind. You may use and distribute it at your own risk. CITRIX DISCLAIMS ALL WARRANTIES WHATSOEVER, EXPRESS, IMPLIED, WRITTEN, ORAL OR STATUTORY, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT. Without limiting the generality of the foregoing, you acknowledge and agree that (a) the software application may exhibit errors, design flaws or other problems, possibly resulting in loss of data or damage to property; (b) it may not be possible to make the software application fully functional; and (c) Citrix may, without notice or liability to you, cease to make available the current version and/or any future versions of the software application. In no event should the code be used to support of ultra-hazardous activities, including but not limited to life support or blasting activities. NEITHER CITRIX NOR ITS AFFILIATES OR AGENTS WILL BE LIABLE, UNDER BREACH OF CONTRACT OR ANY OTHER THEORY OF LIABILITY, FOR ANY DAMAGES WHATSOEVER ARISING FROM USE OF THE SOFTWARE APPLICATION, INCLUDING WITHOUT LIMITATION DIRECT, SPECIAL, INCIDENTAL, PUNITIVE, CONSEQUENTIAL OR OTHER DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. You agree to indemnify and defend Citrix against any and all claims arising from your use, modification or distribution of the code.
Comments (11)
Jul 27, 2009
Anonymous says:
What versions of Provisioning Server are compatible with this workflow?What versions of Provisioning Server are compatible with this workflow?
Jul 27, 2009
Michael Bogobowicz says:
The script was built on PVS build 5.0.2.2188, but it should work on any 5.x vers...The script was built on PVS build 5.0.2.2188, but it should work on any 5.x version, as it's based on the MCLI. It may work on earlier 4.x versions as well, but it hasn't been tested and may need some minor modifications.
May 27, 2010
Anonymous says:
I tried the workflow. This works very well, but how about automatic cleanup of "...I tried the workflow. This works very well, but how about automatic cleanup of "old" versions of vDisks. Would this be possible with workflow? This would prevent the vDisk store filling up with old files.
Sep 01, 2010
Anonymous says:
Hi, How do I modify the script to use it without workflow? ThanksHi,
How do I modify the script to use it without workflow?
Thanks
Sep 01, 2010
Michael Bogobowicz says:
It is possible to do it without Workflow Studio - all you have to do is take the...It is possible to do it without Workflow Studio - all you have to do is take the separate batch files provided in the script and use scheduling to set them apart by a minute or so, enough time to allow the vDisk desktop/server to reboot.
Alternately, if you have the most recent version of PVS, you can make a script with PowerShell that mimics this.
Jan 25, 2011
David Wiedemann says:
Hi Michael I'm having issues to bring this up and running. I have the following...Hi Michael
I'm having issues to bring this up and running. I have the following setup:
My disks at D:\PVS\vDisks, I have two disks with the following roles (Site: Wyssache, Store: vDisks):
-> Collection name for all these machines: Clients_Test
-> As I have several setups in the same store, called XD-1000/XD-10xx, XD-2000/XD-20xx and so on with corresponding client names following the upper way and in other Device Collections, I cannot just use a Standby.
My idea is, to create for each setup an own workflow with it's own set of .bat-files.
So, what i want, is to copy the Master-Disk into the work-disk, where all the productive clients are working with.
I cannot really make sene of all the named you used before, and so I have some troubles (For example, have no idea, what all those mcli-commands mean, that are used)...
So I tried the follwowng:
Changed step2.bat as following:
Now I called the files as following, including the result (I just paste the cmd-output)
Sorry for this big thing here - I just really would be glad to get some help!
Thank you very much for your effort and kind regards
David
Jan 25, 2011
Michael Bogobowicz says:
David, Can you tell me what version of PVS you're using? I'll see if I can play...David,
Can you tell me what version of PVS you're using? I'll see if I can play around and figure out what's going on, though I'm guessing there's a file name mismatch (or possibly a missing command beforehand) at:C:\Programme\Citrix\Provisioning Services Console>mcli add DiskLocator -r diskLocatorName="active.1.01" siteName="Wyssachen" StoreName="vDisks"
Jan 26, 2011
Anonymous says:
Michael Thank you for your reply. I was playing around as well furthermore an...Michael
Thank you for your reply.
I was playing around as well furthermore and have found a solution, that works for me. My main issues were a non-understanding of terms/concept in regards of this update-functionality and a mismatch with the format of the date-output (as we use Swiss Location).
So I constructed my own update-script - and post it here, so anybody, who is interested can use it
Assumptions:
PVS Version 5.6 (German, that explains the path below), class and tapes of Disks are set Per Device collections we have a class-name and two types of desktops:
-> One of them is template
On all disks Automatic Updates must be enabled
There are the following main differences to the original ones from Michael:
Jan 26, 2011
Michael Bogobowicz says:
I like the ping trick as a wait, and thanks for sharing the script! Glad to ...I like the ping trick as a wait, and thanks for sharing the script! Glad to see everything worked out & that you were able to get away from the Workflow Studio requirement of the previous script.
Jan 27, 2011
David Wiedemann says:
Michael Small Addition to the script: Get rid of the limitation, that it can b...Michael
Small Addition to the script: Get rid of the limitation, that it can be ran only once a day:
Generate the variables vDiskName and the Build-Number containing additionally the time (Hour:Minutes), and then work with these variables in the script. So we can use it quite a number of times a day.
Also consider here, that the date/time are used as it fits for Swiss date- and time-format. That might need some tricky workaround with english time format (And: PVS cannot handle alphanumeric characters as Build-numbers - you cannot use "a" for "am" or something similar)...
Script:
Kind regards
David
Feb 02, 2011
Anonymous says:
Hey guys, I updated the script a little further and have posted it on my site: h...Hey guys, I updated the script a little further and have posted it on my site: http://www.randyprice.org/2011/02/02/automatically-updating-a-vdisk-using-powershell-to-apply-os-patches-and-antivirus-definitions/.
Basically, I added support for an additional PVS server, some event logging, the ability to reboot a device collection if needed, and the option to only keep so many revisions of a vDisk image. This can be a scheduled job using any Enterpise Job scheduling software or even Task Scheduler on any machine that has the Provisioning Services Console installed. Check it out and let me know what you think.