655 lines
23 KiB
PowerShell
655 lines
23 KiB
PowerShell
function Import-ITDVMwareSRMExport {
|
|
[CmdletBinding()]
|
|
Param
|
|
(
|
|
[string]
|
|
$Path
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
[xml]$Global:SrmXml = Get-Content -Path $Path
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMDatacenter {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
((($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter | Where-Object id -EQ $i)
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
((($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter | Where-Object name -Like "*$n*")
|
|
}
|
|
}
|
|
'Default' {
|
|
((($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter )
|
|
}
|
|
}
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
function Get-ITDVMwareSRMVMFolder {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
$VMInventoryFolders = (($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.vmFolder.InventoryFolder + (($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.vmFolder.InventoryFolder.InventoryFolder
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
$VMInventoryFolders | Where-Object id -Like "*$i*"
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
$VMInventoryFolders | Where-Object name -Like "*$n*"
|
|
}
|
|
}
|
|
'Default' {
|
|
$VMInventoryFolders
|
|
}
|
|
}
|
|
}
|
|
|
|
end {
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMHostFolder {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
Foreach ($i in $Id) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder | Where-Object id -EQ $i
|
|
}
|
|
}
|
|
'Name' {
|
|
Foreach ($i in $Id) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder | Where-Object name -Like "*$n*"
|
|
}
|
|
|
|
}
|
|
'Default' {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
end {
|
|
|
|
}
|
|
}
|
|
function Get-ITDVMwareSRMComputeResource {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'ResPoolId')]
|
|
[string[]]
|
|
$ResPoolId,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource | Where-Object { $_.id -like "*$i*" }
|
|
}
|
|
}
|
|
'ResPoolId' {
|
|
ForEach ($i in $ResPoolId) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource | Where-Object { $_.resourcepool.id -like "*$i*" }
|
|
}
|
|
}
|
|
'Name' {
|
|
If ($Name) {
|
|
ForEach ($n in $Name) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource | Where-Object { $_.name -like "*$n*" }
|
|
}
|
|
}
|
|
Else {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource
|
|
}
|
|
}
|
|
'Default' {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource
|
|
}
|
|
}
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMVMHost {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource.hosts | Where-Object { $_.id -like "*$i*" }
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource.hosts | Where-Object { $_.name -like "*$n*" }
|
|
}
|
|
}
|
|
'Default' {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.hostFolder.ComputeResource.hosts
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMDatastore {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.datastore | Where-Object id -Like "*$i*"
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.datastore | Where-Object { $_.name -like "*$n*" }
|
|
}
|
|
}
|
|
'Default' {
|
|
(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.datastore
|
|
}
|
|
}
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMNetwork {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
$dvportgrouplist = (($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.NetworkFolder.InventoryFolder.DistributedVirtualPortgroup
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
#(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.NetworkFolder.InventoryFolder.DistributedVirtualPortgroup | Where-Object { $_.id -eq "*$i*" }
|
|
$dvportgrouplist | where-object id -eq $i
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
#(($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.NetworkFolder.InventoryFolder.DistributedVirtualPortgroup | Where-Object { $_.name -eq "*$n*" }
|
|
$dvportgrouplist | where-object name -eq $n
|
|
}
|
|
}
|
|
'Default' {
|
|
$dvportgrouplist
|
|
}
|
|
}
|
|
}
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMVM {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
$VMInventory = (($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.vmFolder.InventoryFolder.VirtualMachine + (($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ Inventory).Attributes.InventoryTree).root.datacenter.vmFolder.InventoryFolder.InventoryFolder.VirtualMachine
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
ForEach ($i in $Id) {
|
|
$VMInventory | Where-Object { $_.id -like "*$i*" }
|
|
}
|
|
}
|
|
'Name' {
|
|
ForEach ($n in $Name) {
|
|
$VMInventory | Where-Object { $_.name -like "*$n*" }
|
|
}
|
|
}
|
|
<#'Default' {
|
|
$VMInventory
|
|
}#>
|
|
}
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMProtectionGroup {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[Parameter(ParameterSetName = 'Name')]
|
|
[string[]]
|
|
$Name,
|
|
|
|
[switch]
|
|
$Detailed,
|
|
|
|
[ValidateScript( { $Detailed -eq $true })]
|
|
[switch]
|
|
$Formatted
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
$ProtectionGroups = ($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ "ProtectionGroups").Attributes.Folder.vmProtectionGroup
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
$ProtectionGroupsSearch = $Id | ForEach-Object {
|
|
$ProtectionGroups | Where-Object Id -Like "*$_*"
|
|
}
|
|
}
|
|
'Name' {
|
|
$ProtectionGroupsSearch = $Name | ForEach-Object {
|
|
$ProtectionGroups | Where-Object Name -Like "*$_*"
|
|
}
|
|
}
|
|
'Default' {
|
|
$ProtectionGroupsSearch = $ProtectionGroups
|
|
}
|
|
}
|
|
|
|
$AllVrDatastores = Get-ChildItem -Path "vmstores:\itdvmvc2.nd.gov@443\Secondary Datacenter\" | Where-Object Name -Like "*_VR*"
|
|
$VrFolders = $AllVrDatastores | Get-ChildItem | Where-Object ItemType -EQ "Folder"
|
|
|
|
If ($Detailed) {
|
|
$DetailedResult = [System.Collections.ArrayList]@()
|
|
ForEach ($ProtectionGroup in $ProtectionGroupsSearch) {
|
|
Write-Warning -Message ("Start Protection Group Loop for " + $ProtectionGroup.Name.TrimStart().TrimEnd() )
|
|
$AbrDatastores = $null
|
|
If ($ProtectionGroup.datastores) {
|
|
$AbrDatastores = Get-ITDVMwareSRMDatastore -Id ($ProtectionGroup.datastores | select -Unique).TrimStart().TrimEnd()
|
|
}
|
|
Else {
|
|
$AbrDatastores = $null
|
|
}
|
|
|
|
$VMs = (Get-ITDVMwareSRMVM -Id ($ProtectionGroup.ProtectionProperties.id)).Name
|
|
$VrDatastores = [System.Collections.ArrayList]@()
|
|
ForEach ($VM in $VMs) {
|
|
$null = $VRDatastores.add( ($VRFolders | Where-Object Name -Like "$VM*").Datastore)
|
|
}
|
|
$VrDatastores = $VRDatastores | Select-Object -Unique Name
|
|
|
|
|
|
$PGobj = [PSCustomObject]@{
|
|
Name = $ProtectionGroup.Name.TrimStart().TrimEnd();
|
|
ReplicationType = $ProtectionGroup.ReplicationProviderType.TrimStart().TrimEnd();
|
|
ArrayPairKey = ( $ProtectionGroup.arrayPairKey | ForEach-Object { If ($_.GetType().Name -eq 'String') { $_.TrimStart().TrimEnd() } } | Select-Object -Unique )
|
|
Folder = ( Get-ITDVMwareSRMVMFolder -Id ($ProtectionGroup.ProtectionProperties.folder | select -Unique).TrimStart().TrimEnd() ).Name.TrimStart().TrimEnd();
|
|
ResourceGroup = ( Get-ITDVMwareSRMComputeResource -ResPoolId ($ProtectionGroup.ProtectionProperties.resourceGroup | select -Unique).TrimStart().TrimEnd() ).Name.TrimStart().TrimEnd();
|
|
Network = ( Get-ITDVMwareSRMNetwork -Id ($ProtectionGroup.ProtectionProperties.RecoveryLocationSettings.DeviceInfo.NetworkDeviceBacking.network | select -Unique).TrimStart().TrimEnd() ).Name.TrimStart().TrimEnd();
|
|
AbrDatastores = If ($AbrDatastores -ne $null) { ($AbrDatastores.name.TrimStart().TrimEnd() ) };
|
|
VrDatastores = $VrDatastores.Name | Select-Object -Unique
|
|
VM = ( Get-ITDVMwareSRMVM -Id ($ProtectionGroup.ProtectionProperties.id.TrimStart().TrimEnd()) ).Name.TrimStart().TrimEnd();
|
|
}
|
|
$null = $DetailedResult.add($PGobj)
|
|
}
|
|
|
|
If ($Formatted) {
|
|
$FormattedResult = $DetailedResult | select Name, ReplicationType, ArrayPairKey, `
|
|
@{n = 'Folder'; e = { ($_.Folder | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = "ResourceGroup"; e = { ($_.ResourceGroup | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = "Network"; e = { ($_.Network | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'AbrDatastores'; e = { ($_.AbrDatastores | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'VrDatastores'; e = { ($_.VrDatastores | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'VM'; e = { ($_.VM | Sort-Object | Out-String).TrimEnd() } }
|
|
}
|
|
}
|
|
}
|
|
end {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
If ($Detailed) {
|
|
If ($Formatted) {
|
|
Write-Output $FormattedResult
|
|
}
|
|
else {
|
|
Write-Output $DetailedResult
|
|
}
|
|
}
|
|
Else {
|
|
Write-Output $ProtectionGroupsSearch
|
|
}
|
|
}
|
|
'Name' {
|
|
If ($Detailed) {
|
|
If ($Formatted) {
|
|
Write-Output $FormattedResult
|
|
}
|
|
else {
|
|
Write-Output $DetailedResult
|
|
}
|
|
}
|
|
Else {
|
|
Write-Output $ProtectionGroupsSearch
|
|
}
|
|
}
|
|
'Default' {
|
|
If ($Detailed) {
|
|
If ($Formatted) {
|
|
Write-Output $FormattedResult
|
|
}
|
|
else {
|
|
Write-Output $DetailedResult
|
|
}
|
|
}
|
|
Else {
|
|
Write-Output $ProtectionGroups
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMVMSettings {
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
param (
|
|
[Parameter(ParameterSetName = 'Id')]
|
|
[string[]]
|
|
$Id,
|
|
|
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
|
[switch]
|
|
$Detailed
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
switch ($PsCmdlet.ParameterSetName) {
|
|
'Id' {
|
|
$VMSettingsSearch = $Id | ForEach-Object {
|
|
($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ VMSettings).Attributes.VMSettings | Where-Object Id -Like "*$_*"
|
|
}
|
|
|
|
}
|
|
'Default' {
|
|
$VMSettingsSearch = ($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ VMSettings).Attributes.VMSettings
|
|
}
|
|
}
|
|
|
|
If ($Detailed) {
|
|
$DetailedResult = [System.Collections.ArrayList]@()
|
|
ForEach ($VMSetting in $VMSettingsSearch) {
|
|
$VMSettingObj = [PSCustomObject]@{
|
|
Id = $VMSetting.id.TrimStart().TrimEnd();
|
|
Name = (Get-ITDVMwareSRMVM -Id $VMSetting.Id.TrimStart().TrimEnd()).Name.TrimStart().TrimEnd();
|
|
#recoveryPriority = $VMSetting.recoveryPriority;
|
|
recoveryPriorityGui = switch ($VMSetting.recoveryPriority.TrimStart().TrimEnd()) {
|
|
25 { 1 }
|
|
40 { 2 }
|
|
50 { 3 }
|
|
60 { 4 }
|
|
75 { 5 }
|
|
}
|
|
}
|
|
$null = $DetailedResult.add($VMSettingObj)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
end {
|
|
If ($Detailed) {
|
|
Write-Output $DetailedResult
|
|
}
|
|
Else {
|
|
$VMSettingsSearch
|
|
}
|
|
}
|
|
}
|
|
|
|
function Get-ITDVMwareSRMRecoveryPlan {
|
|
[CmdletBinding()]
|
|
param (
|
|
[string[]]
|
|
$Name,
|
|
|
|
[switch]
|
|
$Formatted
|
|
)
|
|
|
|
begin {
|
|
|
|
}
|
|
|
|
process {
|
|
$RecoveryPlans = ($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ RecoveryPlans).Attributes.Folder.RecoveryPlan
|
|
If ($Name) {
|
|
$RecoveryPlansSearch = $Name | ForEach-Object {
|
|
$RecoveryPlans | Where-Object name -Like "*$_*"
|
|
}
|
|
}
|
|
else {
|
|
$RecoveryPlansSearch = $RecoveryPlans
|
|
}
|
|
$DetailedResult = [System.Collections.ArrayList]@()
|
|
ForEach ($RecoveryPlan in $RecoveryPlansSearch) {
|
|
Write-Warning -Message ("Start Recovery Plan Loop for " + $RecoveryPlan.Name.TrimStart().TrimEnd() )
|
|
$ProtectionGroupDetailed = Get-ITDVMwareSRMProtectionGroup -Id $RecoveryPlan.protectionGroups.TrimStart().TrimEnd() -Detailed
|
|
|
|
$AbrDatastores = $ProtectionGroupDetailed.AbrDatastores | Select-Object -Unique | Sort-Object
|
|
$VrDatastores = $ProtectionGroupDetailed.VrDatastores | Select-Object -Unique | Sort-Object
|
|
$Network = $ProtectionGroupDetailed.Network | Select-Object -Unique | Sort-Object
|
|
|
|
$VMSettings = Get-ITDVMwareSRMVMSettings -Id (Get-ITDVMwareSRMVM -Name $ProtectionGroupDetailed.VM).Id.TrimStart().TrimEnd() -Detailed
|
|
If ($RecoveryPlan.Callouts) {
|
|
$Callouts = [System.Collections.ArrayList]@()
|
|
$RecoveryPlan.Callouts.CalloutSpec | ForEach-Object {
|
|
|
|
}
|
|
}
|
|
|
|
$RPobj = [PSCustomObject]@{
|
|
Name = $RecoveryPlan.Name.TrimStart().TrimEnd();
|
|
ProtectionGroups = $ProtectionGroupDetailed.Name | Sort-Object;
|
|
Network = $Network;
|
|
AbrDatastores = $AbrDatastores;
|
|
VrDatastores = $VrDatastores;
|
|
BeforePriority1 = ($RecoveryPlan.Callouts.CallOutSpec | Where-Object position -EQ 'beforeRecoverPriority1Vms').RecoveryPrompt | select promptText, Description
|
|
Priority1VMs = ($VMSettings | Where-Object recoveryPriorityGui -EQ 1).Name;
|
|
BeforePriority2 = ($RecoveryPlan.Callouts.CallOutSpec | Where-Object position -EQ 'beforeRecoverPriority2Vms').RecoveryPrompt | select promptText, Description
|
|
Priority2VMs = ($VMSettings | Where-Object recoveryPriorityGui -EQ 2).Name;
|
|
BeforePriority3 = ($RecoveryPlan.Callouts.CallOutSpec | Where-Object position -EQ 'beforeRecoverPriority3Vms').RecoveryPrompt | select promptText, Description
|
|
Priority3VMs = ($VMSettings | Where-Object recoveryPriorityGui -EQ 3).Name;
|
|
BeforePriority4 = ($RecoveryPlan.Callouts.CallOutSpec | Where-Object position -EQ 'beforeRecoverPriority4Vms').RecoveryPrompt | select promptText, Description
|
|
Priority4VMs = ($VMSettings | Where-Object recoveryPriorityGui -EQ 4).Name;
|
|
BeforePriority5 = ($RecoveryPlan.Callouts.CallOutSpec | Where-Object position -EQ 'beforeRecoverPriority5Vms').RecoveryPrompt | select promptText, Description
|
|
Priority5VMs = ($VMSettings | Where-Object recoveryPriorityGui -EQ 5).Name;
|
|
}
|
|
|
|
$null = $DetailedResult.Add($RPobj)
|
|
}
|
|
|
|
If ($Formatted) {
|
|
$FormattedResult = $DetailedResult | select Name, `
|
|
@{n = 'ProtectionGroups'; e = { ($_.ProtectionGroups | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'Network'; e = { ($_.Network | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'AbrDatastores'; e = { ($_.AbrDatastores | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'VrDatastores'; e = { ($_.VrDatastores | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'BeforePriority1'; e = { $_.BeforePriority1 | Out-String } }, `
|
|
@{n = 'Priority1VMs'; e = { ($_.Priority1VMs | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'BeforePriority2'; e = { $_.BeforePriority2 | Out-String } }, `
|
|
@{n = 'Priority2VMs'; e = { ($_.Priority2VMs | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'BeforePriority3'; e = { $_.BeforePriority3 | Out-String } }, `
|
|
@{n = 'Priority3VMs'; e = { ($_.Priority3VMs | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'BeforePriority4'; e = { $_.BeforePriority4 | Out-String } }, `
|
|
@{n = 'Priority4VMs'; e = { ($_.Priority4VMs | Sort-Object | Out-String).TrimEnd() } }, `
|
|
@{n = 'BeforePriority5'; e = { $_.BeforePriority5 | Out-String } }, `
|
|
@{n = 'Priority5VMs'; e = { ($_.Priority5VMs | Sort-Object | Out-String).TrimEnd() } }
|
|
}
|
|
}
|
|
|
|
end {
|
|
If ($Formatted) {
|
|
Write-Output $FormattedResult
|
|
}
|
|
Else {
|
|
Write-Output $DetailedResult
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function Get-ITDVMwareSRMMasterPlan {
|
|
[CmdletBinding()]
|
|
param (
|
|
|
|
)
|
|
|
|
begin {
|
|
$RecoveryPlans = ($Global:SrmXml.configurablesWrapper.data.object | Where-Object Type -EQ RecoveryPlans).Attributes.Folder.RecoveryPlan
|
|
}
|
|
|
|
process {
|
|
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
} |