Last active
August 29, 2015 14:26
-
-
Save chelnak/a46941de3d6ddc1ebec7 to your computer and use it in GitHub Desktop.
Migrate vRealize Business Groups with PowerShell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <# | |
| Usage: | |
| 1. Generate vra-businessgroups.json by running the following cloudclient command | |
| ./cloudclient.bat vra businessgroup list --export D:\vRAExports\vra-businessgroups.json --format "JSON" | |
| 2. Configure the variables and run this script to generate businessgroup-cloudclient-commands.ps1 | |
| 3. Get a replace all of the machine prefix Ids in businessgroup-cloudclient-commands.ps1 with ones obtained from the new server | |
| ./cloudclient.bat vra machineprefix -list | |
| 4. Run businessgroup-cloudclient-commands.ps1 | |
| #> | |
| #region Variables | |
| $cloudClientPath = "D:\cloudclient\bin\cloudclient.bat" | |
| $busunessGroupJsonFile = "vra-businessgroups.json" | |
| $businessGroupScriptFile = "businessgroup-cloudclient-commands.ps1" | |
| #endregion | |
| #region functions | |
| function Format-Users($users){ | |
| if ($users){ | |
| return $users -join "," | |
| } | |
| } | |
| #endregion | |
| #region main | |
| $businessGroups = Get-Content -Raw -Path "$($busunessGroupJsonFile)" | ConvertFrom-Json | |
| $outFile = @() | |
| foreach ($item in $businessGroups.Items){ | |
| $params = @( | |
| "--name '" + $($item.Name) + "'" | |
| #Id AD Container is empty give it the value of None | |
| #In the UI this is not a mandetory field but CloudClient thinks it is | |
| if ($item.ActiveDirectoryContainer){ | |
| "--adContainer '" + $($item.ActiveDirectoryContainer) + "'" | |
| } | |
| else { | |
| "--adContainer 'None'" | |
| } | |
| "--email '" + $($item.AdministratorEmail) + "'" | |
| "--machinePrefixId '" + $($item.MachinePrefixId) + "'" | |
| #If any of the below are empty, do not include the switch in $params | |
| if ($item.Administrators){ | |
| "--admins '" + $(Format-Users($item.Administrators)) + "'" | |
| } | |
| if ($item.Support){ | |
| "--support '" + $(Format-Users($item.Support)) + "'" | |
| } | |
| if ($item.Users){ | |
| "--users '" + $(Format-Users($item.Users)) + "'" | |
| } | |
| ) | |
| #Build each command and add it to the $outFile array | |
| $outFile += 'Invoke-Expression -Command "' + $($cloudClientPath) + ' vra businessgroup add ' + $($params) +'"' | |
| } | |
| #Build the script file | |
| $outFile | Set-Content -Path "$($businessGroupScriptFile)" | |
| #end region |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment