Add switch for vpgName
This commit is contained in:
@@ -1,17 +1,25 @@
|
|||||||
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
function Add-ZertoVpgVm {
|
function Add-ZertoVpgVm {
|
||||||
[CmdletBinding(SupportsShouldProcess)]
|
[CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "VpgName")]
|
||||||
param (
|
param (
|
||||||
[Parameter(
|
[Parameter(
|
||||||
Mandatory,
|
Mandatory,
|
||||||
HelpMessage = "Vpg Settings Identifier",
|
HelpMessage = "Vpg Settings Identifier",
|
||||||
ValueFromPipeline,
|
ValueFromPipeline,
|
||||||
ValueFromPipelineByPropertyName,
|
ValueFromPipelineByPropertyName,
|
||||||
ValueFromRemainingArguments
|
ValueFromRemainingArguments,
|
||||||
|
ParameterSetName = "VpgSettingsIdentifier"
|
||||||
)]
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[Alias("sid", "settingsIdentifier", "vpgSettingsId")]
|
[Alias("sid", "settingsIdentifier", "vpgSettingsId")]
|
||||||
[String]$vpgSettingsIdentifier,
|
[String]$vpgSettingsIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Target VPG Name to Add the VM",
|
||||||
|
ParameterSetName = "VpgName"
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[String]$VpgName,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
Mandatory,
|
Mandatory,
|
||||||
HelpMessage = "Name of VM(s) to add to the VPG"
|
HelpMessage = "Name of VM(s) to add to the VPG"
|
||||||
@@ -25,7 +33,11 @@ function Add-ZertoVpgVm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
process {
|
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
|
$baseSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsIdentifier
|
||||||
$unprotectedVms = Get-ZertoUnprotectedVm
|
$unprotectedVms = Get-ZertoUnprotectedVm
|
||||||
$protectedVms = Get-ZertoProtectedVm
|
$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.
|
# Create a custom object to store the information to easily convert to JSON. Return to vmIdentifiers array.
|
||||||
$returnObject = New-Object PSObject
|
$vmIdentifier
|
||||||
$returnObject | Add-Member -MemberType NoteProperty -Name "VmIdentifier" -Value $vmIdentifier
|
|
||||||
$returnObject
|
|
||||||
} else {
|
} else {
|
||||||
Write-Warning "$machine is already a member of this VPG Settings object. It will not be added again. Skipping $machine"
|
Write-Warning "$machine is already a member of this VPG Settings object. It will not be added again. Skipping $machine"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($vmIdentifiers.Count -gt 0 -and $PSCmdlet.ShouldProcess($Vm, "Adding VM to Vpg")) {
|
if ($vmIdentifiers.Count -gt 0 -and $PSCmdlet.ShouldProcess($VmIdentifiers, "Adding VM to Vpg")) {
|
||||||
$baseSettings.Vms += $vmIdentifiers
|
foreach ($id in $VmIdentifiers) {
|
||||||
Invoke-ZertoRestRequest -uri $baseUrl -method PUT -body $($baseSettings | ConvertTo-Json -Depth 10)
|
# 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 {
|
} else {
|
||||||
Write-Warning "No VMs found to add. Please check your parameters and try again."
|
Write-Warning "No VMs found to add. Please check your parameters and try again."
|
||||||
|
if ($PSCmdlet.ParameterSetName -eq "VpgName") {
|
||||||
|
Remove-ZertoVpgSettingsIdentifier -vpgSettingsIdentifier $vpgSettingsIdentifier
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user