Add switch for vpgName

This commit is contained in:
Wes Carroll
2020-08-03 21:21:05 -04:00
parent d9e1063654
commit a59feb2d5f
+29 -9
View File
@@ -1,17 +1,25 @@
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
function Add-ZertoVpgVm {
[CmdletBinding(SupportsShouldProcess)]
[CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "VpgName")]
param (
[Parameter(
Mandatory,
HelpMessage = "Vpg Settings Identifier",
ValueFromPipeline,
ValueFromPipelineByPropertyName,
ValueFromRemainingArguments
ValueFromRemainingArguments,
ParameterSetName = "VpgSettingsIdentifier"
)]
[ValidateNotNullOrEmpty()]
[Alias("sid", "settingsIdentifier", "vpgSettingsId")]
[String]$vpgSettingsIdentifier,
[Parameter(
Mandatory,
HelpMessage = "Target VPG Name to Add the VM",
ParameterSetName = "VpgName"
)]
[ValidateNotNullOrEmpty()]
[String]$VpgName,
[Parameter(
Mandatory,
HelpMessage = "Name of VM(s) to add to the VPG"
@@ -25,7 +33,11 @@ function Add-ZertoVpgVm {
}
process {
$baseUrl = "vpgsettings/{0}" -f $vpgSettingsIdentifier
if ($PSCmdlet.ParameterSetName -eq "VpgName"){
$VpgIdentifier = Get-ZertoVpg -name $VpgName | Select-Object -ExpandProperty VpgIdentifier
$vpgSettingsIdentifier = New-ZertoVpgSettingsIdentifier -vpgIdentifier $VpgIdentifier
}
$baseUrl = "vpgsettings/{0}/vms" -f $vpgSettingsIdentifier
$baseSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsIdentifier
$unprotectedVms = Get-ZertoUnprotectedVm
$protectedVms = Get-ZertoProtectedVm
@@ -56,19 +68,27 @@ function Add-ZertoVpgVm {
}
}
# Create a custom object to store the information to easily convert to JSON. Return to vmIdentifiers array.
$returnObject = New-Object PSObject
$returnObject | Add-Member -MemberType NoteProperty -Name "VmIdentifier" -Value $vmIdentifier
$returnObject
$vmIdentifier
} else {
Write-Warning "$machine is already a member of this VPG Settings object. It will not be added again. Skipping $machine"
continue
}
}
if ($vmIdentifiers.Count -gt 0 -and $PSCmdlet.ShouldProcess($Vm, "Adding VM to Vpg")) {
$baseSettings.Vms += $vmIdentifiers
Invoke-ZertoRestRequest -uri $baseUrl -method PUT -body $($baseSettings | ConvertTo-Json -Depth 10)
if ($vmIdentifiers.Count -gt 0 -and $PSCmdlet.ShouldProcess($VmIdentifiers, "Adding VM to Vpg")) {
foreach ($id in $VmIdentifiers) {
# Build the Body
$Body = @{VmIdentifier = $id }
# Submit the request. Out to Null to prevent line returns while running.
$null = Invoke-ZertoRestRequest -uri $baseUrl -method POST -body ($Body | ConvertTo-Json -Depth 10)
}
if ($PSCmdlet.ParameterSetName -eq "VpgName") {
$vpgSettingsIdentifier
}
} else {
Write-Warning "No VMs found to add. Please check your parameters and try again."
if ($PSCmdlet.ParameterSetName -eq "VpgName") {
Remove-ZertoVpgSettingsIdentifier -vpgSettingsIdentifier $vpgSettingsIdentifier
}
}
}