diff --git a/Modules/vCenterManualMigration.psm1 b/Modules/vCenterManualMigration.psm1 deleted file mode 100644 index a7750b9..0000000 --- a/Modules/vCenterManualMigration.psm1 +++ /dev/null @@ -1,475 +0,0 @@ -Function Export-DRSRules { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Export DRS Rules to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Export DRS Rules to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Export-DRSRules -Path C:\Users\primp\Desktop\VMworld2017 -Cluster Windows-Cluster -#> - param( - [Parameter(Mandatory=$false)][String]$Path, - [Parameter(Mandatory=$true)][String]$Cluster - ) - - $rules = Get-Cluster -Name $Cluster | Get-DrsRule - - $results = @() - foreach ($rule in $rules) { - $vmNames = @() - $vmIds = $rule.VMIds - - # Reconstruct MoRef ID to VM Object to get Name - foreach ($vmId in $vmIds) { - $vm = New-Object VMware.Vim.ManagedObjectReference - $vm.Type = "VirtualMachine" - $vm.Value = ($vmId -replace "VirtualMachine-","") - $vmView = Get-View $vm - $vmNames += $vmView.name - } - - $rulesObject = [pscustomobject] @{ - Name = $rule.ExtensionData.Name; - Type = $rule.Type; #VMAffinity = 1, VMAntiAffinity = 0 - Enabled = $rule.Enabled; - Mandatory = $rule.ExtensionData.Mandatory - VM = $vmNames - } - $results+=$rulesObject - } - if($Path) { - $fullPath = $Path + "\DRSRules.json" - Write-Host -ForegroundColor Green "Exporting DRS Rules to $fullpath ..." - $results | ConvertTo-Json | Out-File $fullPath - } else { - $results | ConvertTo-Json - } -} - -Function Import-DRSRules { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Import DRS Rules from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Import DRS Rules from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Import-DRSRules -Path C:\Users\primp\Desktop\VMworld2017 -Cluster Windows-Cluster -#> - param( - [Parameter(Mandatory=$true)][String]$Path, - [Parameter(Mandatory=$true)][String]$Cluster - ) - - Get-DrsRule -Cluster $cluster | Remove-DrsRule -Confirm:$false | Out-Null - - $DRSRulesFilename = "/DRSRules.json" - $fullPath = $Path + $DRSRulesFilename - $json = Get-Content -Raw $fullPath | ConvertFrom-Json - - foreach ($line in $json) { - $vmArr = @() - $vmNames = $line.vm - foreach ($vmName in $vmNames) { - $vmView = Get-VM -Name $vmName - $vmArr+=$vmView - } - New-DrsRule -Name $line.name -Enabled $line.Enabled -Cluster (Get-Cluster -Name $Cluster) -KeepTogether $line.Type -VM $vmArr - } -} - -Function Export-DRSClusterGroup { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Export DRS Cluster Group Rules to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Export DRS Cluster Group Rules to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Export-DRSClusterGroup -Path C:\Users\primp\Desktop\VMworld2017 -Cluster Windows-Cluster -#> - param( - [Parameter(Mandatory=$false)][String]$Path, - [Parameter(Mandatory=$true)][String]$Cluster - ) - - $rules = Get-Cluster -Name $Cluster | Get-DrsClusterGroup - - $results = @() - foreach ($rule in $rules) { - $rulesObject = [pscustomobject] @{ - Name = $rule.ExtensionData.Name; - Type = $rule.GroupType; #VMType = 1, HostType = 0 - Member = $rule.Member - } - $results+=$rulesObject - } - if($Path) { - $fullPath = $Path + "\DRSClusterGroupRules.json" - Write-Host -ForegroundColor Green "Exporting DRS Cluster Group Rules to $fullpath ..." - $results | ConvertTo-Json | Out-File $fullPath - } else { - $results | ConvertTo-Json - } -} - -Function Import-DRSClusterClusterGroup { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Import DRS Cluster Group Rules from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Import DRS Cluster Group Rules from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Import-DRSClusterClusterGroup -Path C:\Users\primp\Desktop\VMworld2017 -Cluster Windows-Cluster -#> - param( - [Parameter(Mandatory=$true)][String]$Path, - [Parameter(Mandatory=$true)][String]$Cluster - ) - - $DRSClusterGroupRulesFilename = "\DRSClusterGroupRules.json" - $fullPath = $Path + $DRSClusterGroupRulesFilename - $json = Get-Content -Raw $fullPath | ConvertFrom-Json - - foreach ($line in $json) { - $memberArr = @() - $members = $line.member - - # VMHost Group - if($line.Type -eq 0) { - foreach ($member in $members) { - $memberView = Get-VMhost -Name $member - $memberArr+=$memberView - } - New-DrsClusterGroup -Name $line.name -Cluster (Get-Cluster -Name $Cluster) -VMhost $memberArr - # VM Group - } else { - foreach ($member in $members) { - $memberView = Get-VM -Name $member - $memberArr+=$memberView - } - New-DrsClusterGroup -Name $line.name -Cluster (Get-Cluster -Name $Cluster) -VM $memberArr - } - } -} - -Function Export-Tag { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Export vSphere Tags and VM Assocations to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Export vSphere Tags and VM Assocations to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Export-Tag -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$false)][String]$Path - ) - - # Export Tag Categories - $tagCatagorys = Get-TagCategory - - $tagCatresults = @() - foreach ($tagCategory in $tagCatagorys) { - $tagCatObj = [pscustomobject] @{ - Name = $tagCategory.Name; - Cardinality = $tagCategory.Cardinality; - Description = $tagCategory.Description; - Type = $tagCategory.EntityType - } - $tagCatresults+=$tagCatObj - } - if($Path) { - $fullPath = $Path + "\AllTagCategory.json" - Write-Host -ForegroundColor Green "Exporting vSphere Tag Category to $fullpath ..." - $tagCatresults | ConvertTo-Json | Out-File $fullPath - } else { - $tagCatresults | ConvertTo-Json - } - - # Export Tags - $tags = Get-Tag - - $tagResults = @() - foreach ($tag in $tags) { - $tagObj = [pscustomobject] @{ - Name = $tag.Name; - Description = $tag.Description; - Category = $tag.Category.Name - } - $tagResults+=$tagObj - } - if($Path) { - $fullPath = $Path + "\AllTag.json" - Write-Host -ForegroundColor Green "Exporting vSphere Tag to $fullpath ..." - $tagResults | ConvertTo-Json | Out-File $fullPath - } else { - $tagResults | ConvertTo-Json - } - - # Export VM to Tag Mappings - $vms = Get-VM - - $vmResults = @() - foreach ($vm in $vms) { - $tagAssignments = $vm | Get-TagAssignment - $tags = @() - foreach ($tagAssignment in $tagAssignments) { - $tag = $tagAssignment.Tag - $tagName = $tag -split "/" - $tags+=$tagName - } - $vmObj = [pscustomobject] @{ - Name = $vm.name; - Tag = $tags - } - $vmResults+=$vmObj - } - if($Path) { - $fullPath = $Path + "\AllTagAssocations.json" - Write-Host -ForegroundColor Green "Exporting VM to vSphere Tag Assignment to $fullpath ..." - $vmResults | ConvertTo-Json | Out-File $fullPath - } else { - $vmResults | ConvertTo-Json - } -} - -Function Import-Tag { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Import vSphere Tags and VM Assocations from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Import vSphere Tags and VM Assocations from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Import-Tag -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$true)][String]$Path - ) - - $tagCatFilename = "\AllTagCategory.json" - $fullPath = $Path + $tagCatFilename - $tagCategoryJson = Get-Content -Raw $fullPath | ConvertFrom-Json - - $tagFilename = "\AllTag.json" - $fullPath = $Path + $tagFilename - $tagJson = Get-Content -Raw $fullPath | ConvertFrom-Json - - $vmTagFilename = "\AllTagAssocations.json" - $fullPath = $Path + $vmTagFilename - $vmTagJson = Get-Content -Raw $fullPath | ConvertFrom-Json - - # Re-Create Tag Category - foreach ($category in $tagCategoryJson) { - if($category.Cardinality -eq 0) { - $cardinality = "Single" - } else { - $cardinality = "Multiple" - } - New-TagCategory -Name $category.Name -Cardinality $cardinality -Description $category.Description -EntityType $category.Type - } - - # Re-Create Tags - foreach ($tag in $tagJson) { - New-Tag -Name $tag.Name -Description $tag.Description -Category (Get-TagCategory -Name $tag.Category) - } - - # Re-Create VM to Tag Mappings - foreach ($vmTag in $vmTagJson) { - $vm = Get-VM -Name $vmTag.name - $tags = $vmTag.Tag - foreach ($tag in $tags) { - New-TagAssignment -Entity $vm -Tag (Get-Tag -Name $tag) - } - } -} - -Function Export-VMFolder { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Export vSphere Folder to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Export vSphere Folder to JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Export-VMFolder -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$false)][String]$Path - ) - $vms = Get-VM - - $vmFolderResults = @() - foreach ($vm in $vms) { - $vmFolderObj = [pscustomobject] @{ - Name = $vm.name; - Folder = $vm.Folder.Name; - } - $vmFolderResults+=$vmFolderObj - } - if($Path) { - $fullPath = $Path + "\AllVMFolder.json" - Write-Host -ForegroundColor Green "Exporting VM Folders to $fullpath ..." - $vmFolderResults | ConvertTo-Json | Out-File $fullPath - } else { - $vmFolderResults | ConvertTo-Json - } -} - -Function Import-VMFolder { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Import vSphere Folder from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .DESCRIPTION - Import vSphere Folder from JSON file based on VMworld Demo https://youtu.be/MagjfbIL4kg - .EXAMPLE - Import-VMFolder -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$true)][String]$Path - ) - - $vmFolderFilename = "\AllVMFolder.json" - $fullPath = $Path + $vmFolderFilename - $vmFolderJson = Get-Content -Raw $fullPath | ConvertFrom-Json - - # Root vm Folder - $rootVMFolder = Get-Folder -Type VM -Name vm - - $folders = $vmFolderJson | Select Folder | Sort-Object -Property Folder -Unique - foreach ($folder in $folders) { - $rootVMFolder | New-Folder -Name $folder.folder - } - - foreach ($vmFolder in $vmFolderJson) { - $vm = Get-VM -Name $vmFolder.Name - $folder = Get-Folder -Name $vmFolder.Folder - Move-VM -VM $vm -Destination $folder - } -} - -Function Export-VMStoragePolicy { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Export VM Storage Policies to JSON file - .DESCRIPTION - Export VM Storage Policies to JSON file - .EXAMPLE - Export-VMStoragePolicy -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$false)][String]$Path - ) - - foreach ($policy in Get-SpbmStoragePolicy) { - $policyName = $policy.Name - if($Path) { - Write-Host -ForegroundColor Green "Exporting Policy $policyName to $Path\$policyName.xml ..." - $policy | Export-SpbmStoragePolicy -FilePath $Path\$policyName.xml -Force | Out-Null - } else { - $policy - } - } -} - -Function Import-VMStoragePolicy { -<# - .NOTES - =========================================================================== - Created by: William Lam - Date: 11/21/2017 - Blog: https://www.virtuallyghetto.com - Twitter: @lamw - =========================================================================== - - .SYNOPSIS - Import VM Storage Policies from JSON file - .DESCRIPTION - Import VM Storage Policies from JSON file - .EXAMPLE - Import-VMStoragePolicy -Path C:\Users\primp\Desktop\VMworld2017 -#> - param( - [Parameter(Mandatory=$false)][String]$Path - ) - - foreach ($file in Get-ChildItem -Path $Path -Filter *.xml) { - $policyName = $file.name - $policyName = $policyName.replace(".xml","") - if(Get-SpbmStoragePolicy -Name $policyName -ErrorAction SilentlyContinue) { - Continue - } else { - Write-Host "Importing Policy $policyname ..." - Import-SpbmStoragePolicy -FilePath $Path\$file -Name $policyName - } - } -} \ No newline at end of file