Flings
Apps and tools built by our engineers that are intended to be played with and explored.

InventorySnapshot

InventorySnapshot

Summary

InventorySnapshot allows a user to “snapshot” a given vCenter inventory configuration and then reproduce it. The “inventory” includes the Datacenter folders, datacenters, clusters, resource pools, vApps, hierarchy, roles and permissions, configuration settings, and custom fields. In other words, if you have an inventory with a given set of hosts and VMs organized into a group of clusters, we can faithfully reproduce this environment, including the cluster settings and custom roles you may have defined.

As a simple example, suppose you have an inventory with one datacenter (DC A), one cluster (Cluster A), and two hosts (Host A and Host B). At a high level, our fling emits a PowerCLI script that, when executed, does the following:

  1. Creates Datacenter “DC A.”
  2. Creates cluster “Cluster A.”
  3. Adds host “Host A” to “Cluster A.”
  4. Adds host “Host B” to “Cluster A.”

Notice that this can be helpful for a variety of reasons. For example, suppose you’ve spent a lot of time creating a development vCenter environment, and now you wish to deploy it in production. Using our fling, you can snapshot your “dev” environment and then run it against the “production” vCenter server, saving you the task of laboriously adding each host, creating the proper clusters and resource pools, etc.

For more details, review the following document:

  Inventory Snapshot Documentation

System Requirements

Prerequisites

  • Java 1.6.0_23 or higher
    To run InventorySnapshot, you must have Java installed. We require version 1.6.0_23 or higher, and you can use either the JRE or the JDK. If Java is not already installed on your system, please visit http://www.oracle.com/technetwork/java/javase/downloads/index.html and download Java SE 6 Update 23.
  • PowerCLI 4.1.U1 or higher
    To run InventorySnapshot, you must have the VMware PowerCLI installed. In our case, we have tested with version 4.1U1, build 332441. To download this, please see the following URL: http://www.vmware.com/support/developer/PowerCLI. Note that to complete this step, you will also need to install Powershell, as discussed in the PowerCLI documentation.

Assumptions

  • VMs are already registered on their hosts.
  • Entity names (VMs, Folders, etc.) are unique within an inventory.

Caveats

See section VII of the documentation for a complete list of caveats.

  • Currently does not archive alarm information.
  • May not support certain non-English or special characters in entity names.

Instructions

For a complete step-by-step guide to using this fling, review the documentation and watch the provided videos.

To get started, do the following:

  • Snapshot the inventory using the UI.
    • In Windows, double-click on inventorySnapshot.bat to bring up the UI.
    • In Linux and MacOS, use the inventorySnapshot.sh shell script to bring up the UI.
  • Edit the createInventory.ps1 PowerCLI script (generated in the previous step) so that the host passwords are correct. You can do this using the UI, or you can manually edit the createInventory.ps1 file using your favorite text editor. Just search for 'PASSWORD' to see where you need to input the proper passwords. If you use the UI, the file is saved as “createInventory-PasswordModified.ps1.”
  • Login to a vCenter server using the PowerCLI, change into the directory that contains the createInventory.ps1 script, and just type .\createInventory-PasswordModified.ps1. If you edited the script by hand and saved it as createInventory.ps1, then type createInventory.ps1 instead.

This vCenter fling takes a snapshot of the vCenter inventory and creates a bunch of binary files to describe this inventory and the configuration of the various entities (clusters, networks, etc.). More importantly, it also creates a file called "createInventory.ps1." This is a PowerCLI script.

This PowerCLI script contains commands to re-create the inventory that you've just archived. Feel free to take a look! It is important to note that re-creating most inventories requires adding hosts. As a placeholder for the actual passwords of the hosts being added, our script generates “-password 'PASSWORD'” in the createInventory.ps1 script. Using the UI, we enable you to change the passwords for each host. Of course, you can also open up the file in the editor of your choice and change them yourself. Please note that for now, we store the PowerCLI script as a plaintext file, so your passwords are cleartext. If there is sufficient demand, we can work on changing this.

Video

Inventory Snapshot

Change Log

Updates in Version 1.1

These release notes are intended to supplement and super-cede the documentation in this fling.This release introduces three new features.

1. Template restoration. We have added snapshot and restore of VM templates. In other words, if you have templates in your hierarchy, when you snapshot and then restore the inventory, the templates should be re-registered properly. Prior to this release, we did not archive template information.

2. Command-line snapshot. You can now initiate InventorySnapshot from the command line using cmdLineSnapshot.bat or cmdLineSnapshot.sh. This will snapshot the inventory from the command line, but it will use dummy passwords for the ESX hosts. In order to edit the passwords for the ESX hosts, you will need to use the readFromSnapshot.bat (or readFromSnapshot.sh) UI. When you click on this script, a UI will come up that will ask you to specify the directory where the snapshot has been stored. You type in the name of the directory and click on 'Read from snapshot directory.' The UI will then load the snapshot, allowing you to modify host passwords, etc. You can also use the 'Browse for snapshot directory' to find the snapshot directory using the file browser.

3. Non-unique folder names. In the past, we required all entities (folders, VMs, RPs, etc.) to have unique names. We have now relaxed this restriction for VM and host folders. You can now have the following hierarchy:

Root
|
->Production A Folder
| |
| -->Production Folder
| |
| -->Host A1
|
->Production B Folder
  |
  -->Production Folder
     |
     -->Host B1

Note that the folder name "Production Folder" is repeated. This works for hosts and VMs. It should also work with datastores and networks, though those have not been as extensively tested.

Updates in Version 1.0.1

This version fixes a bug that throws ArrayIndexOutofBoundsException when the ClusterConfigSpecEx of the cluster contains ClusterAffinityRule and ClusterAntiAffinityRule data defined.

Updates in Version 1.0.2

  1. Support for UTF-16 and international character sets. PowerCLI version 4.1u1 runs the generated PowerCLI seamlessly. If you would like to view the PowerCLI file we create (instead of just running it with the PowerCLI interpreter), your text editor must support UTF-16. For example, on MacOS, emacs 22.1.1 (among other editors) supports UTF-16, and on Windows, TeXworks (among other editors) supports UTF-16.
  2. Bug fix for users without DRS licenses: in version 1.0 and 1.0.1, we created clusters with DRS enabled by default, and then reconfigured the cluster according to its actual settings. However, if a user does not have a DRS license and creates clusters without DRS, the cluster creation would fail with a license error. We now correctly create a cluster without DRS settings first, and then we reconfigure it according to its actual settings.
  3. Removal of some spurious file reads: this should speed up the PowerCLI generation phase slightly, but will likely have no other visible impact.

Engineers


Balaji Parimi

Ecosystem Engineering

Ravi Soundararajan

Performance

Mike Stunes

Performance
Add Comment

185 thoughts on “InventorySnapshot

  1. Michael

    Is there any way this tool, or any other combination of tools, to migrate the original morefs for one vCenter to another? For instance, we have a vCenter environment running under a windows environment that has undergone some corruption. It is running stable for the time being, but we want to migrate it to a vCenter appliance in the hopes to bypass the corruption issues. The issue is that the vCloud running atop of this environment is using morefs to manage hosts, folders, and VMs. When using this tool, it assigns each of the recreated VMs new morefs. We have looked at manually changing this, but that more or less negates the beauty of this tool. Any suggestions would be appreciated.

    Reply
  2. Jonathan Shapiro

    This appears very impressive, but I’m concerned that it hasn’t been updated in some time. Can it be used to migrate from vCenter 5.1 running on Windows 2008 R2 with SQL Express to the vCenter 5.5 Appliance?

    Reply
  3. Jonathan

    I have to say, I do agree that this is a good tool but I’ve got similar issues that others have seen regarding vDS…

    I’ve been trying to find a way to migrate from a standard Windows based vCenter to the appliance based vCenter…

    This lack of capability seems to major oversight considering VMware’s expressed desire for customers to move to the appliance…

    Upon utilizing the PowerCLI to import the config, at appears to import just about everything I have correct, to include the actual distrubuted switches and port groups. Where is seems to fail is the actual uplinks associated with the distributed switches. It’s possible I’m missing other failures but upon reaching such a critical failure, I have to revert back to the old vCenter instance…

    This doesn’t appear to have been updated in quite some time, any updates would be very much appreciated…

    -Jonathan

    Reply
  4. Nick

    Hi,

    I tried using this tool on a vCenter which has the web client installed on another server and when I try to take a snapshot it seems unable to recognize my vCenter. It doesn’t check whether the user and/or password are correct and just shows an empty inventory. I tried using the ip-address and the fqdn but non of both work.
    Do you have any kind of help on this?

    Reply
  5. Max

    Amazing Tool > would be happy if that would be supported fully with 5.5

    it would make sense to make a “FULL” Product of it. So to purchase it.

    So because Virtualization is getting more and more complex. and who knows better to dump a Config? ;)
    could be only the Vendor itself.

    Still big single point if Failure having not an official Product of it. Still missing it.

    Best regards

    Max

    Reply
  6. Hemant

    This is a wonderful utility.
    What I am looking at is simulating number of Dell ESXi hosts in a VC. Is there a way to achieve this using this or any other tool that you have? Thanks

    Reply
  7. john s.

    Hello Developers

    We have an Vcenter ( 5.0) with approx 20 Vms and 3 Dateacenters

    Unfourtunately we have no more VCenter license to proof some things with a test Environment.

    So it is possible that some things are going to Crash ( like vm’s , database …)

    Or it the worst case that the snapshot doesn’t get the whole inventory due to some Errors

    I don’t want to explain my Boss that the VM’s are going to crack up..

    John s.

    Reply
  8. Jay Rishel

    This tool looks great, but I think I’ve found a bug. If a VM has a custom attribute with a value in quotes, the reimport fails with this error:
    Missing ‘)’ in method call.
    + $cfView.setField($dsView.MoRef, $cfdHt.get_item(“NB_LAST_BACKUP”), “” <<<< Mo
    n Oct 21 21:01:49 2013,omnbu21,OM-MTS-VMW-PRD"")
    + CategoryInfo : ParserError: (CloseParenToken:TokenId) [], Parse
    Exception
    + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall

    I can work around this by removing the second set of quotation marks, but ideally they'd be escaped correctly. (my current hopeful fix is having our NetBackup process set this value without the quotes, so I don't have to manually correct this file for hundreds of VMs

    Reply
    1. Maarten

      Hi,
      I just used it to migrate a medium sized infrastructure (20 hosts and something like 300 VMs) from 5.1 to 5.1 U1b. Not shocking but nevertheless maybe useful for somebody to read.
      Anyway I believe it still saved me a lot of time. It was a good experience to have my hands on a tool enabling you to move all vCenter content from one to a complete new installation. I’m still under the impression that there isn’t anything out there supporting you doing this on an automated way.
      I knew about a few things wouldn’t be transferred so I took precautions of documenting as much as possible in front of the action.
      Some typical things were left aside and were a bit surprising.
      In short I had to replace the following items.

      - Cluster rules
      - Cluster DRS groups
      - Cluster EVC mode setting
      - Customization Specifications
      - Scheduled tasks

      Reply
    1. Ravi Soundararajan

      Sorry for the late reply! I have tried this, and it works, but bear in mind some of the known bugs I’ve described (like some issues with roles and permissions and DVS).

      Reply
    1. Ravi Soundararajan

      In the best case, yes, but I must admit that there are bugs in the permissions copying. I need to see if I can find time to update this script.

      Reply
  9. JailBreak

    Hi,

    I use the tool for my test environment to see check if we can use this tool to migrate our production server to another server.

    Our production environment have a vCenter with the DB on the same server, since is getting to big, we need to migrate this to a vCenter server only with the services and also to a DB server. Separate the DB from vCenter.

    From what I have tested this is exactly what we need. But there is some issues on the migration. The script did not manage to create any vDS Network on the destination and since we have 429 networks, this one of most important stuff to migrate.

    Most of the errors I get was in this:

    $cfdHt.add($cfd.name, $cfd.key)
    Exception calling “Add” with “2″ argument(s): “Key cannot be null.
    Parameter name: key”
    At C:\…\inventorysnapshot1-1\inventorysnapshot\Data\createInventory-PasswordModified.ps1:3632 char:11
    + $cfdHt.add <<<< ($cfd.name, $cfd.key)
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

    Exception calling "SetField" with "3" argument(s): "
    Required parameter entity is missing

    and also

    $dvsView.AddDVPortgroup($spec)
    You cannot call a method on a null-valued expression
    At C:\…\inventorysnapshot1-1\inventorysnapshot\Data\createInventory-PasswordModified.ps1:680 char:24
    + $dvsView.AddDVPortgroup <<<< ($spec)
    + CategoryInfo : InvalidOperation: (AddDVPortgroup:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    We have this for all our vDS network.

    Can you give us a clue what can be wrong in this export script?? Or did it wrong on the import??

    Thank You

    JL

    Reply
    1. Ravi Soundararajan

      Hi there!

      Unfortunately, we have some known bugs with vDS that we need to fix. We are trying to work on this particular issue. I don’t have an ETA, but we are trying to address this. I’m really sorry for the inconvenience.

      Reply
      1. JailBreak

        Hi Ravi,

        First, thank you for the reply.

        Do you have any timeline to provide a new version with bugs fixed??

        Ate least in the next couple of months??

        Or is there any other option that I can take?? Maybe import/export first the networks then run this tool?? But I don’t think then will work because of the ID of the new vDS on the hosts.

        PS: I will like to take the opportunity to say this is a very good tool, and thanks all the team for creating/proving this.

        JL

        Reply
  10. Jerry Sauter

    This tool is awesome! We decided against 5.0-5.1 in-place upgrade and instead build a fresh new 5.1 with dedicated SSO, vCenter, Web Client, and SQL server.
    Once it is all configured and tested I can use this tool to migrate everything over one night or possibly do it Cluster by Cluster over a few days.
    It has worked perfectly in Lab.
    My only question is what am I going to run into using Auto Deploy in Production.
    I plan to re-install and config Auto Deploy, TFTP, Depot, etc…. on another system.
    I understand that the Host Profiles are not moved and now the hosts managed object ID is changed.
    I think I will need to recreate all the deploy rules as well. What am I missing?

    Reply
  11. Max

    The tool is very interesting and usefully. But based on 4.0 sdk. Now we have 5.1. very long time between 4.0 and 5.1.

    Dont think its poss. To have latest working version based on 5.x sdk. Because its a free ones – theirefore i dont understand why not possible to say official: yes willl be version for 5.0 sdk available soon or not. Dont understand the point to NDA. Not logical

    So anyway. Point which is interesting.

    - how could a user self changing the code , once recognizing that something dont work? That would be nice ;).

    Thx

    Max

    Reply
  12. Vincent Thinselin

    Hello,

    This tool looks very promising. I need to migrate a cluster inventory to another brand new cluster (in the same vCenter/ datacenter). Would doing a search/replace oldcluster/new cluster be enough on the generated scripts after having migrated the VMs ?
    Would resource pools be created and VMs be moved into those pools ?

    Thanks.

    Reply
  13. Max

    Really good stuff – and very often it’s urgent Case to have such an Snapshot created and re/produced elsewhere.

    But it’s really a pitty that such “nice” Tools are not fastly getting Updated to the latest Build.

    So the the official Tested version was vCenter Server 4.1 Update 1| 10 Feb 2011
    theire where 4 Additional Updates (U2,U3,U3a) > no update to the snapshot Tool

    VMware vCenter Server™ 5.0 | 24. August 2011 > no update to the snapshot Tool
    2 Additional Updates (U1,U2) > no update to the snapshot Tool

    vSphere 5.1 | Releases 10 SEP 2012 > no udpate to the snapshot Tool
    2 Additional Updates (0a,0b) > no update to the Snapshot Tool

    So between 27.10.2011 and 20.12.2012 is a very long time.

    is the Project freezed? don’t understand why such Tools where posted and then not be kept maintainend ;). hehe

    Best regards

    Was anybody testing the the Inventory on 5.1?

    Max

    Reply
    1. Sven Poinart

      I just tested :

      source: vCenter 5.0 Update 1
      target: vCenter 5.1 Update 0

      Test without any Hosts – works fine :)

      greetz Sven

      Reply
  14. Anish Panthalani

    Thank you very much for ths wounderful product and the details.

    I have vCneter5 with ESXi 5.0. While i am trying to run Inventory Snapshot .bat file in a windows2008 server, it is not opening. Cold you please help me to solve this issue. I have already installed Java and PowerCLI in this system.

    Thanks,

    Anish Panthalani

    Reply
  15. Michael Verret

    This looks like an interesting tool. However, it seems to mention only cluster information (clusters, cluster folders, resource pools…..). Does this tool export/import VM folders; VM locations; permissions assigned to folders/VM?

    thanks!

    Reply
    1. Ravi

      Hi Michael,
      I’m not sure what you mean regarding VM locations, but we _do_ export/import VM folders. It does capture permissions, but honestly, there seem to have some bugs which I’m trying to work out.

      Reply
  16. Peter Prisack

    Great tool, thank you! It helped me a lot migrating our 250+ VMs datacenter from a 5.0 vCenter appliance to a 5.1 vCenter MS SQL Setup.

    Issues we observed so far:
    - Though we removed umlauts, we had to learn that slashes aren’t supported in VM names also. We found
    the according VMs in a folder called “Identified virtual machines” (“Erkannte virtuelle Maschinen”).
    - We also had problems migrating users/groups and roles containing dashes
    - Logfile output would be great

    The problems weren’t so much severe, we corrected them manually after import. A log file, though, would be great to identify failures.

    Best wishes
    Peter

    Reply
  17. DavidL

    I lost all the OVF Properties on the VMs using them (vApp Options enabled in the VM settings). Do you confirm this tools does not manage these parameters ?

    Reply
  18. ron999

    This is a great tool. Everything works fine excluding DVS.

    Our plan is to upgrade from vSphere 4.1 U2 to vSphere 5.0 with an empty database. The export and import is working fine but i have problems with DVS. The script creates all DVS Information but there is no matching between the VM DVS Port Groups and the DVS under Network anymore.

    The VM network configuration field shows “Invalid backing” and the Network label field is empty.
    Are there some workarounds or fixes for this behavior?

    Thanks in advance

    Reply
  19. Dan

    A great tool, thanks for making available.

    Just letting you know in addition to EVC on a cluster, it had problems with DRS groups.

    Reply
  20. Doug Peterson

    This seems like a great script and handy.

    Might consider adding Caveats for impacts to other products such as VMware View Pool data for linked clones.

    FYI
    If Restoring View pool data to a new instance of VC the desktops will no longer be manageable without correcting the VC IDs in Various Dependent Databases or ADAM.

    Reply
  21. DavidL

    It seems that the configuration of the EVC Mode in a cluster is not restored. Am I wrong ?
    I took a snapshot on a vCenter 4.0U2 and then ran the powershell script on a vCenter 5.0 Update 1.

    Reply
  22. Jeremue

    Well, I’ve just migrate a vcenter server (source in 4.1) to a new version 5. I used the tool ( with some corrections … like some notes which included (“”).

    We import successfully dvswitch …. Maybe a good thing is to have the capabilities to create DVS into each “cluster rebuild script”. (for example we know that a dvs is used of course in a specific datacenter but dedicated for a specific cluster …). So if we want to only rebuild this specific cluster … we need the DVS too.

    Thanks for your great jobs , apologyze me for my “french english”.

    Reply
  23. weda

    is still not visible for me. either on Windows 7 / 2k8r2 nor on win 2k3. I don’t have a XP machine to run it at the moment. Is there any plan to fix it? Otherwise the tool is not working under win7?

    Reply
  24. ethano

    We plan to use this tool to migrate entire vSphere 5 environment to a new vCenter server in next 3 months. Can we expect a new version with vCenter 5 support by this time? Otherwise we have to correct and re-write the final scripts, which is quite complicated in our environment (45000 lines of code) and we do not want to waste our time, if the new version is released soon :)

    Thanks

    Reply
    1. Ravi

      I’m going to look at this and see what I can do. No promises at this time, though. You are planning to migrate at the end of 3 months, or over the course of 3 months?

      ravi

      Reply
      1. Tom

        I would really like to see this for vSphere 5 — finished migrating etc. but good to save/backup vCenter settings etc.

        Thank you, Tom

        Reply
      2. ethano

        Hi, thank you for the reply. We would like to migrate as soon as possible (corrupted database causes occasional vCenter crashes), but we can wait about 3 months, if there is a chance that a version with better vCenter 5 support will be released.

        Thanks,

        ethano

        Reply
  25. Steve OBrien

    Thank you guys so much, seems like it should be a built in tool for vcenter. I was playing with the vcenter appliance and ran into some limitations so I wanted to move over to a fully functional environment and this tool was perfect.
    Thanks!
    Steve

    Reply
  26. Toni

    First, thanks for a great tool, this really is a life saver..

    When using multiple cluster in the same datacenter with the same names on the resource pools there will be some problem when the script is trying to move the vm:s to the pools.
    This is what i did to make it work.
    this is the line made by the tool
    $parent = Get-ResourcePool -name “CR2 – Silver” -Location (Get-Datacenter -name “data-1″)
    this is the one i edited and got to work.
    $parent = Get-ResourcePool -name “CR2 – Silver” -Location (Get-Cluster -name “cluster-1″)

    As you can se the location was the problem for me..

    //Toni

    Reply
    1. Ravi

      Yes, I understand. I assume uniqueness of RPs within a datacenter, but I should consider uniqueness within a cluster instead, which is what you’ve indicated. Thanks!

      Ravi

      Reply
    1. Ravi

      Jay, sorry for the late reply! I haven’t fixed it yet, but I think I have a pretty good idea why it is happening. I hope I can get to work on this soon…

      ravi

      Reply
  27. Nick Murphy

    This tool worked great except creating DVS and associating to correct hosts. I tried running the script a second time as Bas recommended but still end up with the following error in vcenter “The host proxy switch associated to dvSwitch no longer exists in vCenter”

    Reply
    1. Ravi

      Hi Nick,
      yes, I think this is a bug, and I need to examine the code further to see if I can resolve it.

      Thanks!

      Ravi

      Reply
    2. Ravi

      By the way, were you upgrading from VC4.0 to VC5.0? Just making sure–this is a known issue with using the script for 5.0, and one that I need to look at.

      Reply
  28. Bas

    It runs well except it fails while creating the DVS portgroups.
    This is caused by the script order. The script tries to create the portgroups first and the DVS afterwards.
    I found a workaround by running the script twice.

    Reply
  29. Venkatesh

    Hi,
    Used vcenter 4.1 with Esxi 4.1. Vswitch1 with vmkernel, uplinks & vm port group were created
    I took inventory snapshot & deleted vswitch1
    After modifying password, deleted datacenter on vc & replayed the power shell file
    It created dc, host, resource pool but no vswitch elements.
    Does this tool have ability to create vNetwork elements?
    Also I didnt see any powershell commands for vNetwork elements
    Appreciate your answer

    Reply
    1. Ravi

      Hi!

      For vSwitch elements (not DVS, but vSwitch), we assume that the host already has the appropriate vSwitch configuration. If you deleted the vSwitch, then that would make a change on the host, and when you try to restore the host, the vSwitch settings would no longer be there.

      Does this explanation make sense?

      Reply
      1. Venkatesh

        Hi Ravi,
        Thanks for the explanation. You made it clear that this tool is not meant for replaying host only configuration but more to recreate the vCenter configuration. Will try this using this tool and host profiles as a work around. Thanks once again.

        Reply
  30. ittroll

    One of my vCenters has Cisco Nexus 1kV on board. Environment resides on vSphere 4.1.
    Will it work if i snapshot inventory and put to new vSphere 5? What about Nexus switch? If i upgrade VSM and VEMs after i Import snapshot, will it work that way?

    Thanx

    Reply
  31. supal

    this will save us a lot of time with our DR site testing, during which we register/ un-register VMs and they end up in different folders. Awesome work!

    Thank you.

    Reply
  32. Glen Eustace

    We are trying to determine how best to migrate to vSphere 5, as part of the migration we need to change the IP address of the vCentre server so we are considering a fresh install. If we use this tool to transfer the inventory, what happens to the running workload in the cluster ? Can we associate all the hosts with the new vCenter without disturbing the running VMs ?

    Reply
    1. Ravi

      Glen, the running VMs should not be disturbed. You’ll be removing and re-adding hosts to the vCenter, but the VMs will still be running.

      Reply
  33. Mike

    Thanks for the excellent tool! I’ve never had so much fun destroying my lab and watching it come back instantly. Now on to the question:

    Section D2 of the “InventorySnapshot-v5.pdf” states:

    “If you wish to move a cluster to a different vCenter server, you must first create its parent datacenter in the new vCenter server. Sorry, it’s a limitation of our code for now.”

    Is this still true for the current fling version “inventorysnapshot1.0.2″? I cannot reproduce that issue on vCenter 4.x or the new VCSA5. All of my restores using this fling automagically create the required datacenter in my lab testing. Preparing to roll this out in prod this week so trying to cover all bases.

    Reply
  34. Morat

    I have just run this against my 2 host Essentials Plus setup and I now have everything moved over to a new 5.0 vcentre appliance. Being a small shop without a test network, I was sweating this one a bit but everything seems to have gone very smoothly. The script did generate some yellow errors (mainly concerned with out of date syntax for enumerating peripherals and one red error that complained the administrators group no longer existed – but we’re running, now with the new key installed, and all is good.

    Thanks!

    Reply
    1. Ravi

      It depends on if you are using any VC4.1-specific stuff. The current version only records attributes that were available in VC4.0. The tool will work in migrating from VC4.1 to VC5.0, but the only attributes to be migrated will be VC4.0 attributes.

      We are hoping to release a VC4.1 version soon…

      Reply
  35. Forbes Guthrie

    Hi guys,
    I have a handful of questions I was wondering if you could answer for me. I read through all the answered comments and documentation and I don’t think they’ve been answered so far, but apologies if they have. Here goes:
    1. It says it recreates the custom fields. Does it also recreate the contents of the fields for each object, not just the fields themselves?
    2. Has it been updated for vCenter 4.1 attributes yet (e.g. VM-Host affinity rules)?
    3. If all the hosts are configured for AD authentication, can I use AD credentials on the Host Information tab? If so, what is the correct syntax for the username?
    4. If I am just exporting a Cluster in the Inventory Tree tab, does it re-create the datastore object above it in the destination. More importantly, does it recreate the Folder hierarchy in the “VM and Templates” view in the new vCenter (they are datastore not cluster based)?
    5. Here’s the long one :) I’d like to understand the vDS migration.
    Ordinarily, if I wanted to migrate a vDS connected host from one vCenter to another, I would have to create a vSS with matching Port Groups on each host, migrate all VMs to the vSS Port Groups, move the host to the new vCenter and then migrate the VMs to new Port Groups on the new vDS (i.e. http://www.gabesvirtualworld.com/migrating-distributed-vswitch-to-new-vcenter/).
    Does this script just recreate the vDS, or will it safely reconnect all the VMs to the same Port Groups on the new vCenter vDS? Will the VMs lose network connectivity at any point?
    Many thanks for the fantastic tool for the community. I hope you guys are provided time to continue its development for new vCenter versions.
    Forbes.

    Reply
    1. Ravi

      Hi Forbes,
      1. Yes, it should recreate the data for the custom fields as well.
      2. It hasn’t yet been updated to for vCenter 4.1 attributes, but we hope to do that soon.
      3. I need to double check this. Since this is a Fling, I must admit that we didn’t test it with all possible scenarios.
      4. Yes, it recreates the folders. There are some restrictions about folder names but we are hoping to fix those restrictions soon.
      5. Balaji wrote that part of the code…I’ll need to ask him about it. :-)

      Reply
      1. Jorge

        First – Thank you for creating this Tool! I am looking forward to testing it out but I also have a concern regarding vDS migration:
        Have you guys gotten a chance to determine answers to the Forbes questions?
        Does this script just recreate the vDS, or will it safely reconnect all the VMs to the same Port Groups on the new vCenter vDS?
        Will the VMs lose network connectivity at any point?
        This information would be most helpful.

        We are planning to migrate from vCenter 4.0 (32bit) to vCenter 4.1 (64bit) and have a number of dvSwitches. If we use this Tool, what is the impact to dvSwitches, ESX Hosts and VMs during and after the migration?

        I have performed the above vCenter Migration before using the VMware Migration Tool (but with Std switches only) and we did not have any down time to Hosts or VMs. Our goal is to perform the same migration (w\ dvSwitches), WITHOUT any down time.

        Can this Tool accomplish the migration with without any downtime?
        Thank you in advance for help!

        Reply
  36. Josh Atwell

    While I haven’t been able to fully test a rebuild from the PowerCLI script yet I was wondering if it’s included, or possible, for the re-added inventory item to retain it’s original ID.

    Currently if you remove a resource pool and re-add it you’ll get a new ID. This causes some serious problems with vCD if you lose a resource pool on accident or when disabling DRS. I’m looking at this utility to at least get visibility in the complicated hierarchy for a recovery standpoint. I think that vCD environment is the perfect need for this utility. Great work guys!

    Reply
  37. Josh Atwell

    After I run the inventory snapshot I am unable to access the Commit Changes button so that I can isolate a specific section of the Inventory Tree. Not sure what the issue with the UI is on this. Something I’m doing that prevents me from resizing?

    Reply
    1. Ravi

      I posted this below, but it might have been lost in the shuffle…

      Josh,
      I have to admit that I tried this on various flavors of Mac, Linux, and Windows, but I didn’t try it on Windows 7. Let me set up a VM, give it a whirl, and see it I can reproduce this problem. Sorry about that! In the meanwhile, if by some chance you’ve got a Linux VM or a Mac laptop, perhaps it will work there for you :-)

      Also, regarding the ability to retain the same IDs…unfortunately, entity IDs are not preserved when you remove and then add an entity, or when you move an entity between vCenters.

      Reply
    2. Ravi

      Josh, I just tried this in Windows 7 in my VM and it worked fine on a pretty big environment. Can you tell me a little more about your monitor size and resolution so I can try it with those settings and see what happens?

      thanks, and sorry for the inconvenience.
      ravi

      Reply
      1. Josh Atwell

        I believe I nailed down the issue that I was having before with not being able to see the Commit Changes button on the Inventory Tree tab.
        Screen Resolution

        I just received a new monitor with much higher resolution and since then I’ve been able to view the button. If i run it on my laptop screen (1200×800) without the higher resolution I’m not able to scroll down to see the button.

        Reply
  38. Josh Atwell

    Unable to see important buttons and information in the view provided. the documentation states that I need click on the “commit changes” button…but it’s not visible. Is there something I’m missing? This is really messing me up because I’m hoping to use tool for more targeted replications.

    Reply
    1. Ravi

      Hi Josh,
      Would you mind uploading a screenshot to the vmware support ftp site so I can take a look? What platform are you running on?

      Sorry for the inconvenience!

      thanks!
      Ravi

      Reply
      1. Josh Atwell

        I’m running
        Windows Server 2008 64bit
        PowerCLI 4.1u1 Build 332441
        Java 6.0.290

        Laptop is running W7 64bit
        PowerCLI 5
        Java 6.0.290

        Everything grabs the information fine as best I can tell, but UI doesn’t resize. I have a pretty large environment I’m grabbing as well.

        Reply
      2. Josh Atwell

        I’ve uploaded the image Inventory Snapshot Issue – Redacted.png It has been redacted to remove actual inventory data and is the view I receive when in full screen view as well.
        Thanks for the assist!

        Reply
        1. Ravi

          Josh,
          I have to admit that I tried this on various flavors of Mac, Linux, and Windows, but I didn’t try it on Windows 7. Let me set up a VM, give it a whirl, and see it I can reproduce this problem. Sorry about that! In the meanwhile, if by some chance you’ve got a Linux VM or a Mac laptop, perhaps it will work there for you :-)

          Also, regarding the ability to retain the same IDs…unfortunately, entity IDs are not preserved when you remove and then add an entity, or when you move an entity between vCenters.

          Reply
  39. Curt Collins

    Hi – this is a great tool and it’s fast!

    I’ve been using the Perl SDK to try and capture a snapshot of the entire inventory like this and it takes forever – or it dies in ‘find_entity_views’ because the data is too big coming out of VC. I’m dying to know how this works and why it’s so fast. Any hints you can provide? :-)

    Thanks!
    Curt

    Reply
    1. Ravi

      Curt, if you were internal to VMware, I could give you more details. A lot of it has to do with knowing the minimal set of relationships to capture. It is tempting to create a recursive method to try to do a traversal of the entire hierarchy, but that is actually not necessary. Also, I’m using Java to grab the data, and for inventory operations, Java is more efficient than perl. As for find_entity_views, because it is doing a bit of client-side filtering, you end up grabbing a whole lot more data from the server than you need.

      If you upload your perl code, I might be able to take a look and offer some tips, in case you are interested.

      -ravi

      Reply
  40. Tejas

    Hi,
    I am trying to use this method to upgrade from VC 4.1 to 5.
    It runs well except it fails while creating the virtial distributed switch.
    I have deleted read only users and other roles and get this

    You cannot call a method on a null-valued expression.
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:186 char:24
    + $dvsView.AddDVPortgroup <<<< ($spec)
    + CategoryInfo : InvalidOperation: (AddDVPortgroup:String) [], Ru
    ntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    You cannot call a method on a null-valued expression.
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:526 char:24
    + $dvsView.AddDVPortgroup <<<< ($spec)
    + CategoryInfo : InvalidOperation: (AddDVPortgroup:String) [], Ru
    ntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Exception calling "CreateDVS" with "1" argument(s): "Cannot complete a vSphere
    Distributed Switch operation for one or more host members."
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:714 char:22
    + $folderView.CreateDVS <<<< ($dvsCreateSpec)
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

    You cannot call a method on a null-valued expression.
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:826 char:24
    + $dvsView.AddDVPortgroup <<<< ($spec)
    + CategoryInfo : InvalidOperation: (AddDVPortgroup:String) [], Ru
    ntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Exception calling "CreateDVS" with "1" argument(s): "Cannot complete a vSphere
    Distributed Switch operation for one or more host members."
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:1014 char:22
    + $folderView.CreateDVS <<<< ($dvsCreateSpec)
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

    Exception calling "SetEntityPermissions" with "2" argument(s): "The requested c
    hange cannot be completed because it could leave the system without full admini
    strative privileges for a user or group."
    At C:\inventorysnapshot1.0.2\cinventorysnapshot1.0.2\createInventory-PasswordMo
    dified.ps1:1931 char:28
    + $_this.SetEntityPermissions <<<< ($entityMoRef,$permission)
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

    Reply
  41. Mark

    I’m getting this error on running the script to restore a specific datacenter
    I’m snapshotting vcenter 4.1 build 345043 to a brand new instance of the same version.
    Any help would be appreciated…Thank You

    Processing halted; script was too complicated
    At C:\DATA\createInventory-Datacenter-XXXXXXX.ps1:10759 char:42
    + $newRoleId = (get-virole | where-object {$ <<<< _.Name -match "^Admin$"} | se
    lect-object Id)

    Reply
    1. Ravi

      Hi Mark,
      I have seen this error when the script file is very large. The way I have gotten around it is to create .ps1 files for each cluster individually (using the UI–if you just click on the Datacenter and hit ‘commit changes’ on the bottom of the screen, and then go to the final page of the UI, it will create .ps1 files for each cluster). Then, you can restore them individually. Another option is to break up the script file into smaller chunks and run them one at a time so that PowerCLI does not have to parse the whole thing at once.

      Are either of these possible options for you? I know this is a limitation and we are trying to think of ways to fix this.

      Ravi

      Reply
    2. Ravi

      Also, Mark–if you are interested in tarring up the directory with the snapshots, I can try to see if I get the same error on my end. You can give me the version of the .ps1 script that has placeholder passwords instead of the actual passwords.

      Reply
      1. Mark

        Thanks for the reply, yes i can send it to you, what is your email and is winzip ok.

        The script that I’m trying is 2.5mb, when I look at it the first part of the script pertains to the datacenter that I’m am trying to restore, then there is is a bunch of entries not pertaining to the specific datacenter but is part of the full inventory.

        Reply
        1. Ravi

          Hi Mark,
          2 quick notes:
          1. While the script itself is only 2.5MB, on Windows the whole PowerCLI interpreter may end up taking over 1.2GB or so. Depending on the machine where you are running PowerCLI, this might be quite a bit of memory and may cause the error.
          2. You mentioned that there is stuff in the file that is not related to restoring the datacenter. In perusing your file, it looks like all of that stuff is related to roles and permissions restoration, which I do across the entire infrastructure rather than for a specific datacenter. Would you like to try a version of the .ps1 that does NOT have the roles and permissions stuff and see if that works? If so, I can try to make a .ps1 for you that only has stuff related to your DC (Phoenix) and nothing else.
          What do you think?

          Sorry for the hassles!

          Reply
          1. Mark

            I was able to get it to work without the permissions section, but I’m trying to restore an instance that has 13 datacenters, 90 hosts, 2000 plus virtual machines, and there are alot of user permissions set.

            Also I’m running PowerCLI on a vm and I was monitoring the performance and it didnt look like it was using much resources

            Reply
            1. Ravi

              Hi Mark,
              Well, I’m sorry that there seems to be an issue with the permissions code. I did test it pretty thoroughly so I guess I’ll have to investigate this further later on.

              Anyway, I was a little bit confused by your request. Did you want a way to remove all of the permissions code from the .ps1 script? We could actually split your .ps1 into two scripts: one with all the inventory code, and the other with all of the permissions code. Is that what you want?

              Reply
    3. Mark

      One more thing, I’m missing one vm in the ps1 script, it shows in the inventory tree, but when I do a search in the script the vm is not found.

      Reply
      1. Ravi

        If the VM is in the “Discovered vms” folder, then it doesn’t have to appear in the .ps1 script, since it does not have to be moved anyway.

        As for uploading, do you know how to upload to the VMware support web site?

        Reply
              1. Ravi

                Mark, I posted this above, but I put it under the wrong thread, so I’ll just repeat it here.
                ====

                Hi Mark,
                2 quick notes:
                1. While the script itself is only 2.5MB, on Windows the whole PowerCLI interpreter may end up taking over 1.2GB or so. Depending on the machine where you are running PowerCLI, this might be quite a bit of memory and may cause the error.
                2. You mentioned that there is stuff in the file that is not related to restoring the datacenter. In perusing your file, it looks like all of that stuff is related to roles and permissions restoration, which I do across the entire infrastructure rather than for a specific datacenter. Would you like to try a version of the .ps1 that does NOT have the roles and permissions stuff and see if that works? If so, I can try to make a .ps1 for you that only has stuff related to your DC (Phoenix) and nothing else.
                What do you think?

                Sorry for the hassles!

                Reply
                1. Mark

                  I posted above also one more thing, would it work if I somehow pulled out the permissions sections pertaining to the datacenter that im restoring and then run the script?

                  Thanks for all your help

                  Reply
                  1. Ravi

                    If you want a script that doesn’t have the permissions checking code, it’s actually pretty simple. All of the permissions checking code is done at the end of the .ps1 file, so you just need to delete everything between
                    # ### START UPDATE ROLE_PERM: ALL

                    and

                    # ### END UPDATE ROLE_PERM: ALL

                    Does that make sense?

                    (Basically the script is:
                    1. fix inventory
                    2. fix roles/permissions
                    3. fix custom fields
                    We are deleting #2).

                    Reply
                    1. Mark

                      I got the inventory to work, pulling that code out as a separate script. Then I went in and pulled out the permissions code for the particular datacenter and that also ran fine. So like you said earlier I’ll just have to run smaller scripts and I should be good. Thanks for all your help

  42. Eugene Pressley

    Does the current InventorySnapshot script support vCenter 5.0? I have vCenter 4.1 and would like to move to a vCenter 5.0 virtual appliance. If it does support it then I have another question. If I capture the vCenter 4.1 inventory, bring up a vCenter 5 appliance, add my current 4.1 licenses (the same that is installed on vCenter 4.1), then run the script against the vCenter 5 appliance will it move the hosts from the 4.1 server or will the hosts be on both the 4.1 and 5.0 server?

    Reply
    1. Ravi

      Hi Eugene,

      It supports VC5.0 in the sense that if you snapshot a VC4.1 and then restore to VC5.0, that will work. You should be aware, though, that at the moment we only capture VC4.0-specific state, so if you are using stuff specific to VC4.1, then those attributes will not be captured. We are working on updating all of these things to support later vCenter versions.

      As for the 2nd question, the hosts will be moved from VC4.1 to 5.0–they will not reside on both.

      Ravi

      Reply
  43. Matthew Graci

    It would be useful if the data gathered in the snapshot could then be viewed with a vSphere client, without actually having the servers.

    Use case: have customer run tool, send output file, then view the data in the vSphere client at different site. This could be used in addition to partner HealthChecks to view the hierarchy in a GUI.

    -Matt

    Reply
    1. Ravi

      Yep. I’m probably going to provide something similar as part of the ‘command-line’ version.
      Basically, you’d be able to take a snapshot using the command line, and then you’d open the snapshotted files using the client (without requiring access to the servers).

      Ravi

      Reply
    2. Ravi

      Matthew,
      In version 1.1, I added a feature where you can take a snapshot from the command line and then read the snapshot later. The relevant .bat files are “cmdLineInventorySnapshot.bat” to take the snapshot, and then “readFromSnapshot.bat” to start up the UI and read the snapshotted files. I hope this helps.

      Reply
  44. TEC3-Virtualisierung

    Wir möchten das Tool jede Nacht automatisch laufen lassen. Warum funktioniert das scripten nicht, obwohl es als Beispiel angegeben ist?

    Reply
    1. Ravi

      I took German in high school, so forgive me if I am misinterpreting your request, but I believe you are asking why the command-line version does not work. In the original release, we decided to deprecate the command-line version, and we are asking you to use the UI instead (using inventorysnapshot.bat). However, in the near future, we expect to release a command-line version, so if you wait a little bit longer, we can help.

      Reply
  45. Michael Veira

    Can it backup and restore alarm definitions in vcentre? I usually setup alerting for all of the alarm definitions in vcentre but we have multiple virtual centres (one for each environment qa, dev, prod, etc), and its a pain whenever we build a new one to have to manually setup all the definitions all over again.

    Reply
  46. Tom

    I have to blow away one host and rebuild it…can this app restore just that ONE host’s configuration etc. or must I redo the host by hand???

    Thank you, Tom

    Reply
    1. Ravi

      Tom, if you mean that you have to essentially reinstall ESX on a single host, then unfortunately, this tool will not help. Sorry. Or am I misinterpreting your question?

      Reply
    1. Ravi

      Hmm.

      We are using APIs that are backward-compatible with vCenter 2.5, so I think the snapshot phase would work, but I am not sure if PowerCLI works with vCenter 2.5, so I think that might cause an issue when trying to restore the inventory.

      Have you used PowerCLI with vCenter 2.5?

      Ravi

      Reply
      1. Cyril

        In fact, I believe I did try managing vCenter 2.5 from PowerCLi before though some of the fields does not enumerate properly but yeah, I could give this a shot. Also, to what details doest this inventory snapshot generates? For instance, are all the cluster configurations and rules being converted into PowerCLI codes as well?

        Regards,
        Cyril

        Reply
        1. Balaji Parimi

          Yes, all cluster configuration is included in the generated PowerCLI code. It also generates PowerCLI code for custom fields.

          Reply
  47. Askar Kopbayev

    Guys, your tool is amazing. I could fix my vCenter performance stats issue by resetting SQL database and restoring all inventory using your product.

    However, I had issues with two test hosts that were configured to use dvSwitch. The error in vCenter was “The host proxy switch associated to dvSwitch no longer exists in vCenter”

    Reply
      1. Ravi

        Thanks for the comments!

        We’ll need to examine the templates issue: we’ve heard that from a few other customers.

        As for the dvswitch error, do you happen to have the output from the PowerCLI script? We’ll still take a look anyway, but just thought I’d ask.

        thanks!

        Reply
  48. Sean Donaghey

    Can this tool be used to bring 4 different vCenter servers into a new vCenter v4.1 server? I am looking at bringing together 4 separate vCenter to make it easier for me to manage and for better licensing.

    Reply
    1. Ravi

      Hi Sean,

      Just to double check that I understand your question. If you want, you can independently snapshot each vCenter, and then run each of the resulting PowerCLI scripts against the new vCenter 4.1 server. Then you’ll have a single vCenter4.1 server that is managing all of your hosts. I think that is what you want, right?

      Reply
    1. Ravi

      We do intend to release a version for vSphere v5, though the timetable for release hasn’t been determined yet.

      Thanks,
      Ravi

      Reply
  49. Roey Azroel

    Hi,

    Looking very useful app!
    I didn’t fully understand what i can backup / copy with this application.

    There is a list of all the object?

    something like:
    Folders
    Cluster
    Resource pool.
    etc…

    Thanks!

    Roey

    Reply
    1. Ravi

      Hi Roey,

      Basically, it can archive your entire inventory structure (datacenters, clusters, folders, resource pools, hosts, and VMs), the configuration settings of your clusters and resource pools, roles/permissions, and custom fields.

      There is more to it than that–if you look at the documentation and watch the videos, hopefully it will give you a good feel for what it does. :-)

      thanks!
      Ravi

      Reply
  50. Eric Byrne

    We tested the fling and it worked for the most part, creating the datacenters, clusters, moving the specified hosts etc.
    But we noticed that the user/group permissions were not recreated and only some of the roles were populated correctly.

    Are these settins a known limitation or a potential bug with the fling.?

    Reply
    1. Eric Byrne

      Here’s the error when the fling is trying to create a new role:
      New-VIRole : 6/23/2011 3:09:41 PM New-VIRole Object reference not set to an instance of an object.
      At C:\vmware\inventorysnapshot\snapshot.03\createInventory-PasswordModified.ps1:13534 char:11
      + new-virole <<<< -name "CTR Global VMware Admin" -Privilege $privList
      + CategoryInfo : NotSpecified: (:) [New-VIRole], VimException
      + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.ViCore.Cmdlets.Commands.PermissionManagement.New VIRole

      We're also missing some users in other roles, all the users in the vCenter Permissions and missing Alarm definitions.

      Thanks for any help…
      Eric

      Reply
      1. Ravi

        Hi Eric,
        this might be a possible bug in the fling. Just to double-check: for the users/groups, are those users and groups present on both the source vCenter and destination vCenter? The fling won’t create the users: just the roles and permissions. The error you’ve shown above often happens when a user or group doesn’t exist on the destination vCenter.

        If the users/groups are present on both, I’ll have to look more carefully at this…

        Thanks!!

        Reply
        1. Eric Byrne

          We figured out the problem.
          The original server had CapacityIQ installed at one time.
          The script was failing out when trying to adding a user (in a long list) that had a parameter associated with CapacityIQ. We deleted the user and fixed that error.

          We are still experiencing errors, but i beleive they are related to the fact that we are tryng to test the script (and not actually move any hosts or VM’s) before implementing it. If we run into another bug i’ll post again.

          Reply
  51. zipster

    Hi,

    i try to move vCenter to a new host.

    But i get an Error:

    Add-VMHost : 22.06.2011 16:07:30 Add-VMHost The operation for the ent
    ity ClusterComputeResource-domain-c53 failed with the following message: “Die L
    izenz zum Ausführen des Vorgangs ist nicht verfügbar.”
    Bei E:\inventorysnapshot1.0.1\inventorysnapshot\snapshot\createInventory-Passwo
    rdModified.ps1:19 Zeichen:11
    + Add-VMHost <<<< 192.168.1.XXX -Location $cluster -user root -password 'XXXX' -Force
    + CategoryInfo : NotSpecified: (Smile [Add-VMHost], NotEnoughLicense
    s
    + FullyQualifiedErrorId : Client20_TaskServiceImpl_CheckServerSideTaskUpda
    tes_OperationFailed,VMware.VimAutomation.ViCore.Cmdlets.Commands.AddVMHost

    How can i fix this Error?

    Thanks…

    Reply
    1. Balaji Parimi

      vCenter has the license information (a license key) that determines how many hosts (and features) can be managed by that vCenter.

      E.g. If a vCenter has a license key with 100 licenses, and if adding a host consumes 5 licenses, then you can add 20 hosts. To add more hosts, you need to add more licenses to the vCenter. The number of licenses consumed by a host depends on the number of CPUs, features etc.

      The error message here suggests that there are not enough licenses to add that host.

      Reply
      1. zipster

        But why?

        I had enough licenses to create on the first server VCENTER the data center and hosts.
        Why did I suddenly do not have enough licenses when I use this script? The license is stil the same.

        Have i enter anything special before run the script?

        Reply
        1. Balaji Parimi

          Are you using the same license key for the second vCenter? This error is coming from the vCenter. I will double check what causes this error.

          Reply
          1. zipster

            I’ve found the reason for the error message.

            In the Script createInventory i’ve found “-DRSEnabled -DRSMode FullyAutomated” but our license don’t have DRS.

            Thanks for your help.

            Reply
            1. Ravi

              Hi Zipster,

              Until we are able to provide a more permanent fix, I think a temporary workaround (in case you haven’t already tried it) is to remove the “-DRSEnabled -DRSMode FullyAutomated” from the New-Cluster command. We actually set the cluster configuration settings later on in the script, so we do not need to create the cluster with DRS enabled to begin with.

              I hope this helps.

              Ravi

              Reply
  52. AureusStone

    This fling looks pretty good. I already have a PowerCLI script that does exactly this, but if this fling can be expanded out to copy alarms etc that would be awesome.

    And if it copied all of the data including stats that would be even better. :)

    Reply
  53. Dutch

    Great work guys! We’d love to use this to start with a fresh database.

    We are have some troubles however. The java script seems to stop at a certain point (after reading DRS rules) with the following error: java.lang.ArrayIndexOutOfBoundsException: 2

    - After this the host information tab does not display all the hosts.
    - It looks like the Inventory Tree Tab does display all the hosts.
    - The generated powercli code does not create a full backup of our environment.

    We did our best to remove all special characters in de VM notes fields, resource pools and vm folders. There are no duplicate names used throughout vCenter.

    Are there any known limitations to the number of hosts/vm’s?

    Any help/tips/advice would be great!

    Thanks,

    Dutch

    Reply
    1. Ravi

      Hi Dutch,
      first of all, sorry you are seeing issues!
      Which version of vCenter are you using? 4.0? 4.1? Just want to make sure. How large is the environment. I’ve tested the archiving on some reasonably sized setups (up to 1000 VMs). However, to be fair, we haven’t done performance tuning on it, so if you have a truly huge environment, performance may not be that great–we are working on this.

      May I see a screenshot of your inventory and a screenshot of the host inventory tree from InventorySnapshot?

      thanks!
      Ravi

      Reply
      1. Dutch

        Hi Ravi and Balaji,

        The updated script works perfect. Thanks!
        Maybe an idea to recreate the EVC settings as well?

        Thanks

        Reply
  54. Edson Habowsky

    Hi,
    I just used it as an “alternative backup”. I didn’t use it to recreate or reproduce my enviornmet..
    as an backup, I think it’s ok..simple and effective.
    I just missed some feedback information after click on the “create script button” at the last window.. so I’m hopping that the file it’s created or modified fine..
    Rather, I got the feedback information at the password window, when I reset password and clicked on “submit button..” (it gives me the message that the file “createinventory-passowrdmodified.ps1″ will be created) thats fine..

    I think the last window, should gives the feedbak message saying that the file “createinventory-passowerdmodified.ps1″ file was generatede or modified fine. that’s would improve the trust about the conclusion process.

    Reply
    1. Ravi

      Hi Edson,
      Yes, I must apologize for that. I made a UI change before release and I should have documented it properly[

      Here is the deal:
      When you hit “Commit changes” on the “Host Information” pane, InventorySnapshot creates a file called “createInventory-passwordModified.ps1″ and brings up a dialog box. If you do NOT click on anything within the “Inventory Tree” pane, then there are no new files to re-created on the final “Generate New PowerCLI Code” pane, so when you click on “Generate PowerCLI Code,” nothing happens. However, I should have put up a dialog box to indicate that no new files needed to be created. I used to do that before, but I got rid of it before release.

      This is good feedback to help us improve our UI.

      Reply
  55. Kim Pedersen

    Great tool :o)
    We have been looking for something similar for quit some time. We have some serious problem with our vCenter and therefore this tool comes with perfect timing. I have tried to take a snapshot of our environment but I seems to only get half !!
    We have 2 datacenters and I only get the Ps1 files for one of them and the user I’m using is also administrator in the missing datacenter. I get the files as expected but they are empty.Do you have any ideas of where I’m failing ????
    Looking forward to ee you reply – thanks in advance.

    Reply
    1. Ravi

      Hi Kim,
      Do either of the files named “createInventory-PasswordModified.ps1″ or “createInventory.ps1″ contain the entire inventory?

      In other words, are you only seeing problems when you try to select specific datacenters to restore?

      Also, do you have any special characters (or UTF-16-specific) characters in any of your DC names?

      Another option is to go to the “Inventory Tree” pane of the UI and just click the root (group-d1) and see what that provides.

      If these don’t work, perhaps if you send us a screenshot of the environment we can try to help you out.

      thanks!
      Ravi

      Reply
      1. Kim Pedersen

        Hi Ravi,
        Both “createInventory-PasswordModified.ps1″ and “createInventory.ps1″ only contains 1 datacenter the same one (ESX01).
        It doesn’t matter if I just select the missing datacenter under “Inventory Tree” – group-d1 or select everything – output in the files mentioned above is the same, one DC is missing. My Dc’s has the following names: ESX01 and Coop_DK_ALB_NFS. Perhaps the problem is related to the _ in the name of the missing DC ???
        Please let me know if you still need some screenshots which I gladly would provide you with :o)
        Rgds,
        Kim.

        Reply
        1. Ravi

          HI Kim,
          it might help to have a screenshot of your inventory plus a screenshot of the InventorySnapshot windows (without your passwords, of course :-). Not sure if you’d be comfortable sharing these on this forum. If not, we should try to figure out how to get access to the screenshots.

          “_” should be an acceptable character, so I hope that isn’t the problem :-)

          Ravi

          Reply
          1. Kim Pedersen

            Hi Ravi

            I have taken a screenshot of my inventorySnapshot and my inventory from vCenter. I have them in a doc file – can I sent it to you ??? Or do you prefer if I post them here ???
            Rgds,
            Kim

            Reply
            1. Ravi

              Hi Kim,
              Hmm…I am not sure how to do this. Do you know how to use the inbound ftp site @ VMware? If so, maybe you can use that and let me know where you put the data. If that doesn’t work and you are ok posting screenshots, feel free.

              Reply
              1. Kim Pedersen

                Hi Ravi
                I have upload screendumps.doc to your ftp site under Inventorysnapshot. Hopefully this will clarify things :o)
                Looking forward to hear about your findings.

                Reply
                1. Ravi

                  Hi Kim,

                  Would you mind taking an InventorySnapshot but NOT changing the passwords, and then zipping up the directory and sending it to me. The way to do this is to just invoke the InventorySnapshot screen, hit “Commit changes” on the “Host Information” tab without changing any passwords, and then quitting the application. I’d like to see the generated PowerCLI.
                  Also, do you have read permissions on the datacenter that is NOT appearing? We require you to have Administrator permissions in order to archive all Datacenters.

                  thanks!
                  Ravi

                  Reply
                  1. Kim Pedersen

                    Hi Ravi
                    I have upload 2 PowerCli files (createInventory.ps1 and createInventory-PasswordModified.ps1) to your ftpsite in Inventorysnapshot_Coop. As fare as I can see in the files there is no references to our second DC and the user I’m using is administrator in that DC as well.
                    Looking forward to hear from you.
                    Kim.

                    Reply
                  2. Ravi

                    Hi Kim,
                    I took a quick look @ the PowerCLI files. The PowerCLI files are either truncated, or the InventorySnapshot died while generating code for DMZ- Ekstern.

                    There are a few things to do here:
                    1. We should probably create a special debug build that can dump logging information. I don’t have one ready right now, but it is something I will need to look into.

                    2. Can you send me the entire contents of the directory (i.e., including all of the binary files with names like “morNameMap” ). From there, I hopefully can take a closer to look to see where it might have had issues.

                    3. I’ve been working on a version that supports UTF-16, so that we can allow international character sets. On the off chance there are any such characters here, that might help as well (though I know that you’ve said you’ve gotten rid of such characters). We might try to give you a pre-release version of that for testing.

                    Sorry you’ve had so many problems. Hopefully we can fix them and get this up and running for you.

                    Reply
                    1. Kim Pedersen

                      Hi Ravi.
                      I have uploaded all the files to /inventorysnapshot_coop01. If you want me to try the “UTF-16″ version – I would be happy to try it :o)
                      Don’t worry about the problems because we have a vCenter problem which might require us to start all over and therefore this tools comes very handy :O)
                      Kim.

                    2. Ravi

                      Hi Kim,
                      I haven’t looked at your files yet, but the problem you are seeing is similar to one that we’ve observed in another setup, and we may have found the bug that is causing this behavior. We will try to release a fix soon.

        2. Ravi

          Kim,
          would you mind trying the latest version (1.0.1), which has recently been uploaded. This may fix your issues.

          thanks!
          Ravi

          Reply
          1. Kim Pedersen

            Hi Ravi,
            Great news – everything seems to be working fine. I now have a PS1 file of each cluster and they are not empty anymore and DC inventory files which is not empty anymore. I will try later to make an actual restore.
            Thanks for looking into this. I appreciate it.
            Rgds,
            Kim.

            Reply
  56. Ferdinand

    Nice fling, this will save us a lot of time!

    using it with the “front-end” works perfecly, but….. :-)

    i am trying to put this (run.bat+ all params) into a windows 2008 scheduled task, but do not succeed..

    when doing the same run.bat server user pass snapshot d:\vmware\backup-inventory from a dos-prompt, the front-end keeps popping up (empty) and nothing is happening..

    is it possible to use it from a scheduled task?

    Reply
    1. Ravi

      Hi Ferdinand,
      When you say “run.bat”, do you mean that you are running this within a PowerCLI prompt and you are getting no output? Can you describe your workflow a little bit more?

      Are you using the run.bat script within the directory, or your own? That run.bat script is actually old and should be deprecated. If there is sufficient need for a command-line version, we can try to provide one.

      Thanks!

      Reply
  57. Virtualization.net

    Thank you for this tool, testing it out in my lab and have some questions:

    Does it save alerts, alarms, notification settings as well?

    Is there option to restore good “snapshot” to the dev snapshot (in case where dev gets corrupted or you mess up and need to revert back)?

    Regards,

    Harron

    Reply
    1. Ravi

      Hi Harron,

      Thanks for trying it out. We don’t save alarm stuff at present. That’s one of those things we hope to do later (standard disclaimers apply).

      Can you give me a little bit more information about your second question? What do you mean by restoring a “good” snapshot to a dev snapshot?

      Reply
  58. PatrickA

    Wonderfull !
    I’m currently in that phase of migrating my test/dev to Prod.
    So much time saved and good perspectives for future backups..

    Does it also save customization files ?

    Thanks a lot

    Reply
    1. Balaji Parimi

      Custom fields and their values are saved.

      I am assuming that you are not talking about the CustomizationSpec files you use while deploying a VM from a clone or template etc. These files are not included as these are not part of any configuration of any of the inventory items.

      Reply
    1. Balaji Parimi

      It reproduces the dvSwitches as well (the specific properties pertaining to the default VmwareDistributedVirtualSwitch only in this release).

      Reply
    1. Balaji Parimi

      The tool is developed using 4.0 SDK.

      You can snapshot vCenter 4.0 and restore it on any version 4.0 and above without any issues.

      If you take a snapshot of the newer versions of the vCenter like 4.1 or 5.0 it will miss the new properties.

      Reply
        1. Ravi

          We aren’t allowed to comment on forward-looking issues like this (standard legal disclaimer), but we do hope to release something that works with 5.0.

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>