diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4d97ada..d392c98 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -3,5 +3,6 @@ ### Zerto Virtual Manager * Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/60) in the `Get-ZertoRecoveryReport` function where the `-VpgIdentifier` parameter was not working. This parameter is not accepted by the API as a valid filter and is ignored. This parameter has been removed from the function. -* Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/60) where the `Export-ZertoVpgNicSetting` function would not properly execute when run against a VM with no NICs attached. +* Addressed a reported [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/61) where the `Export-ZertoVpgNicSetting` function would not properly execute when run against a VM with no NICs attached. * In reviewing the `Export-ZertoVpgNicSetting`, a review of the `Import-ZertoVpgNicSetting` was completed and it was determined to update the import logic based on various test cases. Along with this, it is now possible to reset the NIC settings to the default state with the `Import-ZertoVpgNicSetting` command. Please review the [Import-ZertoVpgNicSetting help](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Import-ZertoVmNicSetting.md) to review the updated options and import logic. +* Refactored the `Checkpoint-ZertoVpg` command to allow pipeline input (ByValue and ByProperty) for the VpgName parameter. diff --git a/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 b/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 index f580a6f..7ae3eea 100644 --- a/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 +++ b/Tests/Public/Checkpoint-ZertoVpg.Tests.ps1 @@ -16,7 +16,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' { Context "$($global:function)::Parameter Unit Tests" { It "Has a parameter for the VpgName that is Mandatory" { - Get-Command $global:function | Should -HaveParameter vpgName -Mandatory -Type String + Get-Command $global:function | Should -HaveParameter vpgName -Mandatory -Type 'String[]' } It "Has a parameter for the CheckpointName that is Mandatory" { diff --git a/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 b/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 index e8d94b7..c0dd1a4 100644 --- a/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 +++ b/ZertoApiWrapper/Public/Checkpoint-ZertoVpg.ps1 @@ -4,10 +4,12 @@ function Checkpoint-ZertoVpg { param( [Parameter( Mandatory = $true, - HelpMessage = "Name of the VPG to tag." + HelpMessage = "Name of the VPG to tag.", + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true )] [ValidateNotNullOrEmpty()] - [string]$vpgName, + [string[]]$vpgName, [Parameter( Mandatory = $true, HelpMessage = "Text to tag the checkpoint with." @@ -18,16 +20,18 @@ function Checkpoint-ZertoVpg { begin { $baseUri = "vpgs" - $vpgIdentifier = $(get-zertovpg -name $vpgName).vpgIdentifier - $body = @{"checkpointName" = $checkpointName} } process { - if ($vpgIdentifier) { - $uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier - Invoke-ZertoRestRequest -uri $uri -body $($body | ConvertTo-Json) -method "POST" - } else { - Write-Output "Cannot find VPG named $vpgName. Please check the name and try again." + foreach ($name in $vpgName) { + $vpgIdentifier = $(get-zertovpg -name $name).vpgIdentifier + if ($vpgIdentifier) { + $uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier + $body = @{"checkpointName" = $checkpointName} + Invoke-ZertoRestRequest -uri $uri -body $($body | ConvertTo-Json) -method "POST" + } else { + Write-Output "Cannot find VPG named $name. Please check the name and try again." + } } } diff --git a/docs/Checkpoint-ZertoVpg.md b/docs/Checkpoint-ZertoVpg.md index d7cfbf5..7951d3c 100644 --- a/docs/Checkpoint-ZertoVpg.md +++ b/docs/Checkpoint-ZertoVpg.md @@ -13,7 +13,7 @@ Add a tagged checkpoint to a specified VPG ## SYNTAX ``` -Checkpoint-ZertoVpg [-vpgName] [-checkpointName] [] +Checkpoint-ZertoVpg [-vpgName] [-checkpointName] [] ``` ## DESCRIPTION @@ -49,14 +49,14 @@ Accept wildcard characters: False Name of the VPG to tag. ```yaml -Type: String +Type: String[] Parameter Sets: (All) Aliases: Required: True Position: 0 Default value: None -Accept pipeline input: False +Accept pipeline input: True (ByPropertyName, ByValue) Accept wildcard characters: False ``` diff --git a/docs/Get-ZertoRecoveryReport.md b/docs/Get-ZertoRecoveryReport.md index d8361bf..d316621 100644 --- a/docs/Get-ZertoRecoveryReport.md +++ b/docs/Get-ZertoRecoveryReport.md @@ -20,7 +20,7 @@ Get-ZertoRecoveryReport [] ### filter ``` Get-ZertoRecoveryReport [-startTime ] [-endTime ] [-pageNumber ] [-pageSize ] - [-vpgIdentifier ] [-vpgName ] [-recoveryType ] [-state ] [] + [-vpgName ] [-recoveryType ] [-state ] [] ``` ## DESCRIPTION diff --git a/docs/Import-ZertoVmNicSetting.md b/docs/Import-ZertoVmNicSetting.md index d65b8fc..1c9a226 100644 --- a/docs/Import-ZertoVmNicSetting.md +++ b/docs/Import-ZertoVmNicSetting.md @@ -26,7 +26,6 @@ Each entry in the CSV will be for one VM and a single NIC attached to that VM. E This logic is applied to both the Live and Test settings individually. It is recommended to use the `Export-ZertoVpgNicSetting` to dump all current settings and then modify a copy of the exported file with only the settings you wish to update. Import the copied file and if you need to revert, Import the original. - ## EXAMPLES ### Example 1