Compare commits
104 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fe4d8cf4dd | |||
| e35939e592 | |||
| c422e26903 | |||
| e37444249e | |||
| 616cdcf7a2 | |||
| e7658fcfec | |||
| a306391a14 | |||
| 83e9551692 | |||
| 7fbc550390 | |||
| e3cba682c7 | |||
| 96b3e65be2 | |||
| d15111a883 | |||
| 90434b56a2 | |||
| 85e60adac1 | |||
| 0d6bc39c86 | |||
| ad2073f404 | |||
| e12bf9d85e | |||
| a5f3ad4de0 | |||
| 77fb3c8f67 | |||
| b2e5fe7b5c | |||
| f34f21bb85 | |||
| 536a62f792 | |||
| df83277c06 | |||
| d55bc3e4b3 | |||
| 7488e7999f | |||
| dcba2b04a9 | |||
| bd94bfe5db | |||
| fb722661a7 | |||
| 6121940563 | |||
| 64fa03e4ea | |||
| 86854442ef | |||
| bc46a512cd | |||
| 0a84246d8e | |||
| f299aecb9b | |||
| 646476e74e | |||
| 285a82f280 | |||
| fbe9fb2af8 | |||
| 1af70b8c80 | |||
| 0ef71c25bb | |||
| 78e1cdb981 | |||
| 1a66d4e64b | |||
| 2fef1dbc42 | |||
| b00ededc7f | |||
| 8e5ced9b87 | |||
| 69fb384c89 | |||
| a8b9ec3a00 | |||
| 355be7c1e5 | |||
| c94f04de77 | |||
| f4807f94fb | |||
| d39777cbb0 | |||
| 8b43856558 | |||
| 83879a51e7 | |||
| 2d1fb8e4db | |||
| e774cd861d | |||
| a660aa29b3 | |||
| 82458712f0 | |||
| bae9eb9b99 | |||
| 2ea7092b91 | |||
| de08f0eece | |||
| 3e980dc195 | |||
| eccc5f27f3 | |||
| e516a24e38 | |||
| 07f92583f8 | |||
| c2f554dca1 | |||
| 8bd865d83d | |||
| 02e50d9cd6 | |||
| 7fc0a5f579 | |||
| ce5a64c683 | |||
| 1317a6c039 | |||
| 169e628c7b | |||
| d35d9d7cf4 | |||
| a891a4914d | |||
| 71352cae7b | |||
| b0edd9026f | |||
| 7cde687d70 | |||
| 569d9e264c | |||
| 40331c26f9 | |||
| 526093afc6 | |||
| dc4dd1ad05 | |||
| 779ee1415e | |||
| 13592df6aa | |||
| fad3ca0e27 | |||
| 52782aa1e5 | |||
| bc02e796d6 | |||
| 4c32bbe057 | |||
| cc9e53ac44 | |||
| 37165e18a7 | |||
| 772848beef | |||
| 18185612bb | |||
| ecab2500c7 | |||
| fde7f67e45 | |||
| e19f9b34f5 | |||
| a36a7cb37a | |||
| 1e80bb06fb | |||
| 4c98b75134 | |||
| a7efc7c717 | |||
| 02f1c89d86 | |||
| 5b9243a02f | |||
| 1962dda15c | |||
| 801553178e | |||
| 6c92dff447 | |||
| 003396998c | |||
| 05783a1f37 | |||
| 270470f858 |
Vendored
+1
-1
@@ -4,5 +4,5 @@
|
|||||||
"editor.insertSpaces": true,
|
"editor.insertSpaces": true,
|
||||||
"editor.tabSize": 4,
|
"editor.tabSize": 4,
|
||||||
"powershell.codeFormatting.preset": "OTBS",
|
"powershell.codeFormatting.preset": "OTBS",
|
||||||
"terminal.integrated.shell.windows": "c:/Program Files/PowerShell/6/pwsh.exe"
|
"terminal.integrated.shell.windows": "c:/Program Files/PowerShell/7/pwsh.exe"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ PowerShell wrapper for Zerto Virtual Manager API
|
|||||||
|
|
||||||
## Current Build Status
|
## Current Build Status
|
||||||
|
|
||||||
[](https://app.codacy.com/app/wcarroll/ZertoApiWrapper?utm_source=github.com&utm_medium=referral&utm_content=wcarroll/ZertoApiWrapper&utm_campaign=Badge_Grade_Settings)
|
|
||||||
[](https://dev.azure.com/ZertoPublic/ZertoApiWrapper/_build/latest?definitionId=1&branchName=master)
|
[](https://dev.azure.com/ZertoPublic/ZertoApiWrapper/_build/latest?definitionId=1&branchName=master)
|
||||||
|

|
||||||
|
|
||||||
## Legal Disclaimer
|
## Legal Disclaimer
|
||||||
|
|
||||||
@@ -32,6 +32,7 @@ PS> Install-Module -name ZertoApiWrapper
|
|||||||
|
|
||||||
## Recent Updates
|
## Recent Updates
|
||||||
|
|
||||||
|
* April 10th, 2020: April Release. See [Release Notes](https://github.com/ZertoPublic/ZertoApiWrapper/releases/tag/1.4.0.20200410).
|
||||||
* December 1st, 2019: November Release. See [Release Notes](https://github.com/ZertoPublic/ZertoApiWrapper/releases/tag/1.3.0.20191201).
|
* December 1st, 2019: November Release. See [Release Notes](https://github.com/ZertoPublic/ZertoApiWrapper/releases/tag/1.3.0.20191201).
|
||||||
* August 1st, 2019: August Release. See [Release Notes](https://github.com/ZertoPublic/ZertoApiWrapper/releases/tag/1.2.0.20190801).
|
* August 1st, 2019: August Release. See [Release Notes](https://github.com/ZertoPublic/ZertoApiWrapper/releases/tag/1.2.0.20190801).
|
||||||
* June 16th, 2019: Added functionality for Zerto Analytics.
|
* June 16th, 2019: Added functionality for Zerto Analytics.
|
||||||
|
|||||||
+25
-6
@@ -2,9 +2,28 @@
|
|||||||
|
|
||||||
### Zerto Virtual Manager
|
### Zerto Virtual Manager
|
||||||
|
|
||||||
* [Zerto version 7.5 has been released.](https://s3.amazonaws.com/zertodownload_docs/Latest/Zerto%20Virtual%20Replication%20Release%20Notes.pdf) As part of this release Zerto has added API functionality that requires the following updates.
|
* 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.
|
||||||
* A token is now required to pair two sites together. The need is discussed in [Issue 46](https://github.com/ZertoPublic/ZertoApiWrapper/issues/46). To implement this change a `-token` parameter has been added to the `Add-ZertoPeerSite` function.
|
* 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.
|
||||||
* A new function has been added; `New-ZertoPairingToken`. This function will allow users to generate a pairing authentication token from the target ZVM to be used in the pairing process. [Issue 47](https://github.com/ZertoPublic/ZertoApiWrapper/issues/47) covers additional details.
|
* 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.
|
||||||
* A new function has been added; `Invoke-ZertoEvacuateVra`. This function will allow users to evacuate a target VRA by specifying a Host Name, VRA Name, or VRA Identifier. All VMs currently replicating to the specified location will be migrated to different targets. [Issue 51](https://github.com/ZertoPublic/ZertoApiWrapper/issues/51)
|
* Refactored the `Checkpoint-ZertoVpg` command to allow pipeline input (ByValue and ByProperty) for the VpgName parameter.
|
||||||
* A function has been added; `Copy-ZertoVpg`. This function will allow users to copy the settings of a single VPG and add new VMs to it. There is currently no customization beyond specifying the VMs to be placed in the newly created VPG. Should additional edits \ updates be required, they should be done post creation. [Issue 54](https://github.com/ZertoPublic/ZertoApiWrapper/issues/54)
|
* Corrected a parameter typo in the `Get-ZertoVpgSetting` function. The misspelt parameter was added as an alias to ensure any existing scripts using the parameter continue to function.
|
||||||
* Fixed [issue 57](https://github.com/ZertoPublic/ZertoApiWrapper/issues/57) where a `Start-ZertoFailoverTest` would throw an error complaining about validating the body parameter. This has been fixed and tested against Zerto Virtual Manager 7.5 Update 1 with Windows PowerShell 5.1 and PowerShell Core 6.2.
|
* Refactored the `Get-ZertoVpg` command to remove repetitive commands and variables that are no longer required.
|
||||||
|
* Moved `Invoke-ZertoRestRequest` and `Invoke-ZARestRequest` to be public functions. As there become more and more scenarios where there are not prebuilt functions to accomplish complex specialized tasks, it became apparent that these functions could be leveraged to make the experience and workflow easier.
|
||||||
|
* Updated the `Install-ZertoVra` logic to ensure that the target datastore is available on the target host. There isn't currently any method to validate the target network, but if that becomes available in a later version of the API, the function will be updated.
|
||||||
|
* Updated the `Install-ZertoVra` function to allow for installation of the VRA using the host password method. Please review the [Install-ZertoVra](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Install-ZertoVra.md) documentation for syntax and examples.
|
||||||
|
* Updated the `Edit-ZertoVra` function to allow for modification of the associated ESX host password if the need arises. Please review the [Edit-ZertoVra](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Edit-ZertoVra.md) documentation for syntax and examples.
|
||||||
|
* Added a new function, `Set-ZertoUserCredential`, to allow the updating of the username and password used to connect the Zerto Virtual Manager to the paired hypervisor. Please see the [Set-ZertoUserCredential](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Set-ZertoUserCredential.md) help for additional information.
|
||||||
|
* With the release of [Zerto 8.0](https://www.zerto.com/zerto-8-0-general-availability/) some additional API endpoints have become available.
|
||||||
|
* Updated `Get-ZertoVirtualizationSite` to add the `-repository` parameter to enable returning information for LTR repositories.
|
||||||
|
* Updated `Get-ZertoVpgSetting` to add the `-ltr` parameter to enable returning information for current LTR settings for the selected VPG.
|
||||||
|
|
||||||
|
### Zerto Analytics
|
||||||
|
|
||||||
|
* Added several functions for the newly added [Zerto Analytics](https://analytics.zerto.com) Planner.
|
||||||
|
* `Get-ZAPlannerSite` Help can be found here: [Get-ZAPlannerSite](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerSite.md)
|
||||||
|
* `Get-ZAPlannerStatsReport` Help can be found here: [Get-ZAPlannerStatsReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerStatsReport.md)
|
||||||
|
* `Get-ZAPlannerJournalSizeReport` Help can be found here: [Get-ZAPlannerJournalSizeReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerJournalSizeReport.md)
|
||||||
|
* `Get-ZAPlannerNetworkPerformanceReport` Help can be found here: [Get-ZAPlannerNetworkPerformanceReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerNetworkPerformanceReport.md)
|
||||||
|
* `Get-ZAPlannerWanReport` Help can be found here: [Get-ZAPlannerWanReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerWanReport.md)
|
||||||
|
* `Get-ZAPlannerZcasReport` Help can be found here: [Get-ZAPlannerZcasReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerZcasReport.md)
|
||||||
|
* Created `Get-ZAProtectedVm` and `Get-ZAProtectedVmReport` functions to leverage the newly released Zerto Analytics APIs for this data. Help files can be found here: [Get-ZAProtectedVm](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAProtectedVm.md) and [Get-ZAProtectedVmReport](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAProtectedVmReport.md)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
|
|
||||||
Context "$($global:function)::Parameter Unit Tests" {
|
Context "$($global:function)::Parameter Unit Tests" {
|
||||||
It "Has a parameter for the VpgName that is Mandatory" {
|
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" {
|
It "Has a parameter for the CheckpointName that is Mandatory" {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $false }
|
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $false }
|
||||||
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $false }
|
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $false }
|
||||||
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $false }
|
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $false }
|
||||||
|
@{ParameterName = 'HostRootPassword'; Type = 'securestring'; Mandatory = $false}
|
||||||
)
|
)
|
||||||
|
|
||||||
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
@@ -56,7 +57,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
param($ParameterName)
|
param($ParameterName)
|
||||||
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
$attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
|
$attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
|
||||||
$attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '^\$_ \-match \[IPAddress\]\$_'
|
$attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '\$_ \-match \[IPAddress\]\$_'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 17 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 17
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'recoveryType'; Type = 'String'; Mandatory = $true; Validation = 'Set' }
|
||||||
|
@{ParameterName = 'desiredJournalHistory'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
|
||||||
|
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Range' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Set' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 17 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 17
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'recoveryType'; Type = 'String'; Mandatory = $true; Validation = 'Set' }
|
||||||
|
@{ParameterName = 'interval'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
|
||||||
|
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Range' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Set' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 12 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 12
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String[]'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 17 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 17
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'recoveryType'; Type = 'String'; Mandatory = $true; Validation = 'Set' }
|
||||||
|
@{ParameterName = 'desiredJournalHistory'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
|
||||||
|
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Range' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Set' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 14 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 16
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'recoveryType'; Type = 'String'; Mandatory = $true; Validation = 'Set' }
|
||||||
|
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Range' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Set' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 16 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 16
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'recoveryType'; Type = 'String'; Mandatory = $true; Validation = 'Set' }
|
||||||
|
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Range' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
'Set' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should be $false -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 14 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 14
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'AllVms'; Type = 'Switch'; Mandatory = $false; Validation = $Null }
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'Volumes'; Type = 'Switch'; Mandatory = $false; Validation = $Null }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 12 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 12
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'vmIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Validation)
|
||||||
|
Switch ($Validation) {
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -3,13 +3,257 @@ $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
|||||||
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
BeforeAll {
|
||||||
|
$script:ScriptBlock = (Get-Command $global:function).ScriptBlock
|
||||||
|
}
|
||||||
|
|
||||||
Context "$global:function::Parameter Unit Tests" {
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
It "$global:function should have exactly 23 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 23
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'hostIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
|
||||||
|
@{ParameterName = 'folders'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'hostClusters'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'hosts'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'networks'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'resourcePools'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'vms'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
@{ParameterName = 'repositories'; Type = 'Switch'; Mandatory = $true; Validation = $Null }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "<ParameterName> parameter has correct validation setting of <Validation>" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Validation)
|
||||||
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
|
Switch ($Validation) {
|
||||||
|
|
||||||
|
'NotNullOrEmpty' {
|
||||||
|
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$Null {
|
||||||
|
$Type -match 'Switch' | Should -BeTrue -Because "Only Switch Parameters should not have validation"
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$true | Should -BeFalse -Because "No Validation Selected. Review test cases"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
It "$($global:function) does not have 'SupportsShouldProcess'" {
|
||||||
|
Get-Command $global:function | Should -not -HaveParameter WhatIf
|
||||||
|
Get-Command $global:function | Should -not -HaveParameter Confirm
|
||||||
|
$script:ScriptBlock | Should -not -match 'SupportsShouldProcess'
|
||||||
|
$script:ScriptBlock | Should -not -match '\$PSCmdlet\.ShouldProcess\(.+\)'
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Context "$global:function::Parameter Functional Tests" {
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-NoParams.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/devices'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-devices.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/devices?hostIdentifier=4567'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-devices-hostid.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hosts'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-hosts.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hosts/4567'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-hosts-hostid.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-SiteId.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/datastores'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-datastores.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/datastoreclusters'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-datastoreClusters.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/networks'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-Networks.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/folders'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-Folders.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hostclusters'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-hostClusters.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/resourcepools'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-ResourcePools.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/vms'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-VMs.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/repositories'
|
||||||
|
} {
|
||||||
|
return (Get-Content "$global:here\Mocks\VirtualSite-repositories.json" -Raw) | ConvertFrom-Json
|
||||||
|
} -Verifiable
|
||||||
|
|
||||||
|
It "Should return all known sites when called without parameters" {
|
||||||
|
$results = Get-ZertoVirtualizationSite
|
||||||
|
$results.Count | Should -BeExactly 2
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a single site when a siteIdentifier is provided" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234'
|
||||||
|
$results.VirtualizationSiteName | Should -BeExactly 'cavc.nc.lab'
|
||||||
|
$results.siteIdentifier | Should -BeExactly '8e1c9f53-4973-4a4a-b2dd-1ebb293614d8'
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of devices with the '-devices' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -devices
|
||||||
|
$results.Count | Should -BeExactly 5
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of devices with the '-devices' switch and hostIdentifier provided" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -devices -hostIdentifier '4567'
|
||||||
|
$results.Count | Should -BeExactly 5
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of hosts with the '-hosts' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -hosts
|
||||||
|
$results.Count | Should -BeExactly 3
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a single host with the '-hosts' switch and hostIdentifier provided" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -hosts -hostIdentifier '4567'
|
||||||
|
$results.VirtualizationHostName | Should -BeExactly "caesx3.nc.lab"
|
||||||
|
$results.hostIdentifier | Should -BeExactly "09db6c5b-b956-430f-9589-b58876ca377a.host-18"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of datastores with the '-datastores' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -datastores
|
||||||
|
$results.Count | Should -BeExactly 8
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of datastores with the '-datastoreClusters' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -datastoreClusters
|
||||||
|
$results.DatastoreClusterIdentifier | Should -BeExactly "09db6c5b-b956-430f-9589-b58876ca377a.group-p44"
|
||||||
|
$results.DatastoreClusterName | Should -BeExactly "CA_DS_Cluster"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of Networks with the '-networks' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -networks
|
||||||
|
$results.NetworkIdentifier | Should -BeExactly "09db6c5b-b956-430f-9589-b58876ca377a.network-20"
|
||||||
|
$results.VirtualizationNetworkName | Should -BeExactly "VM Network"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of folders with the '-folders' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -folders
|
||||||
|
$results.Count | Should -BeExactly 3
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of Host Clusters with the '-hostClusters' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -hostClusters
|
||||||
|
$results.ClusterIdentifier | Should -BeExactly "09db6c5b-b956-430f-9589-b58876ca377a.domain-c7"
|
||||||
|
$results.VirtualizationClusterName | Should -BeExactly "CA Cluster"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of Resource Pools with the '-resourcePools' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -resourcePools
|
||||||
|
$results.ResourcePoolIdentifier | Should -BeExactly "09db6c5b-b956-430f-9589-b58876ca377a.resgroup-8"
|
||||||
|
$results.ResourcePoolName | Should -BeExactly "Resources"
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of VMs with the '-VMs' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -vms
|
||||||
|
$results.Count | Should -BeExactly 4
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should return a list of LTR Repositories with the '-repositories' switch" {
|
||||||
|
$results = Get-ZertoVirtualizationSite -siteIdentifier '1234' -repositories
|
||||||
|
$results.ConnectionType | Should -BeExactly "ServerMessageBlock"
|
||||||
|
$results.RepositoryIdentifier | Should -BeExactly "120355ce-fcd0-4820-a971-787d0470793b"
|
||||||
|
$results.RepositoryName | Should -BeExactly "Synology"
|
||||||
|
$results.StorageType | Should -BeExactly "NetworkShare"
|
||||||
|
$results.Path | Should -not -be $null
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert-VerifiableMock
|
||||||
|
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/devices'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/devices?hostIdentifier=4567'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hosts'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hosts/4567'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/datastores'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/datastoreclusters'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/networks'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/folders'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/hostclusters'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/resourcepools'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/vms'
|
||||||
|
} -Exactly 1
|
||||||
|
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -ParameterFilter {
|
||||||
|
$uri -eq 'virtualizationsites/1234/repositories'
|
||||||
|
} -Exactly 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[
|
|||||||
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
|
||||||
Context "$global:function::Parameter Unit Tests" {
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
it "$global:function should have exactly 22 parameters defined" {
|
It "$global:function should have exactly 24 parameters defined" {
|
||||||
(get-command $global:function).Parameters.Count | Should -Be 22
|
(Get-Command $global:function).Parameters.Count | Should -Be 24
|
||||||
}
|
}
|
||||||
|
|
||||||
$ParameterTestCases = @(
|
$ParameterTestCases = @(
|
||||||
@@ -17,6 +17,8 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
||||||
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
||||||
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
|
||||||
|
@{ParameterName = 'UseRootCredential'; Type = 'Switch'; Mandatory = $true; Validation = $null }
|
||||||
|
@{ParameterName = 'HostRootPassword'; Type = 'SecureString'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
||||||
)
|
)
|
||||||
|
|
||||||
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
@@ -35,12 +37,12 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
'IpAddr' {
|
'IpAddr' {
|
||||||
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
$attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
|
$attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
|
||||||
$attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '^\$_ \-match \[IPAddress\]\$_'
|
$attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '\$_ \-match \[IPAddress\]\$_'
|
||||||
}
|
}
|
||||||
|
|
||||||
$null {
|
$null {
|
||||||
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
||||||
$attrs.TypeId.Count | Should -Be 2
|
$attrs.TypeId.Count | Should -Be 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-6
@@ -12,7 +12,6 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
@{ParameterName = 'uri'; Type = 'String'; Mandatory = $true; TestName = 'URI' }
|
@{ParameterName = 'uri'; Type = 'String'; Mandatory = $true; TestName = 'URI' }
|
||||||
@{ParameterName = 'method'; Type = 'String'; Mandatory = $false; TestName = 'Method' }
|
@{ParameterName = 'method'; Type = 'String'; Mandatory = $false; TestName = 'Method' }
|
||||||
@{ParameterName = 'body'; Type = 'String'; Mandatory = $false; TestName = 'Body' }
|
@{ParameterName = 'body'; Type = 'String'; Mandatory = $false; TestName = 'Body' }
|
||||||
@{ParameterName = 'contentType'; Type = 'String'; Mandatory = $false; TestName = 'contentType' }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
It "Parameter present and Type test for: <TestName> " -TestCases $testCases {
|
It "Parameter present and Type test for: <TestName> " -TestCases $testCases {
|
||||||
@@ -29,14 +28,9 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
Get-Command $global:function | Should -HaveParameter Method -DefaultValue "GET"
|
Get-Command $global:function | Should -HaveParameter Method -DefaultValue "GET"
|
||||||
}
|
}
|
||||||
|
|
||||||
It "ContentType parameter default is 'application/json'" {
|
|
||||||
Get-Command $global:function | Should -HaveParameter contentType -DefaultValue "application/json"
|
|
||||||
}
|
|
||||||
|
|
||||||
$NotNullOrEmptyTests = @(
|
$NotNullOrEmptyTests = @(
|
||||||
@{ParameterName = 'uri'; TestName = 'Uri' }
|
@{ParameterName = 'uri'; TestName = 'Uri' }
|
||||||
@{ParameterName = 'body'; TestName = 'Body' }
|
@{ParameterName = 'body'; TestName = 'Body' }
|
||||||
@{ParameterName = 'contentType'; TestName = 'ContentType' }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
It "<TestName> parameter does not accecpt a null or empty value" -TestCases $NotNullOrEmptyTests {
|
It "<TestName> parameter does not accecpt a null or empty value" -TestCases $NotNullOrEmptyTests {
|
||||||
-4
@@ -14,9 +14,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
$ParameterNameTestCases = @(
|
$ParameterNameTestCases = @(
|
||||||
@{ParameterName = "uri"; Type = "String"; Mandatory = $true; DefaultValue = $null; TestName = "URI" }
|
@{ParameterName = "uri"; Type = "String"; Mandatory = $true; DefaultValue = $null; TestName = "URI" }
|
||||||
@{ParameterName = "method"; Type = "String"; Mandatory = $false; DefaultValue = 'GET'; TestName = "Method" }
|
@{ParameterName = "method"; Type = "String"; Mandatory = $false; DefaultValue = 'GET'; TestName = "Method" }
|
||||||
@{ParameterName = "apiVersion"; Type = "String"; Mandatory = $false; DefaultValue = 'v1'; TestName = "API Version" }
|
|
||||||
@{ParameterName = "body"; Type = "String"; Mandatory = $false; DefaultValue = $null; TestName = "Body" }
|
@{ParameterName = "body"; Type = "String"; Mandatory = $false; DefaultValue = $null; TestName = "Body" }
|
||||||
@{ParameterName = "contentType"; Type = "String"; Mandatory = $false; DefaultValue = 'application/json'; TestName = "Content Type" }
|
|
||||||
@{ParameterName = "credential"; Type = "PSCredential"; Mandatory = $false; DefaultValue = $null; TestName = "Credential" }
|
@{ParameterName = "credential"; Type = "PSCredential"; Mandatory = $false; DefaultValue = $null; TestName = "Credential" }
|
||||||
@{ParameterName = "returnHeaders"; Type = "Switch"; Mandatory = $false; DefaultValue = $null; TestName = "Return Headers" }
|
@{ParameterName = "returnHeaders"; Type = "Switch"; Mandatory = $false; DefaultValue = $null; TestName = "Return Headers" }
|
||||||
)
|
)
|
||||||
@@ -36,9 +34,7 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
|
|
||||||
$ParameterValidationTestCases = @(
|
$ParameterValidationTestCases = @(
|
||||||
@{ParameterName = "URI"; TestName = "URI" }
|
@{ParameterName = "URI"; TestName = "URI" }
|
||||||
@{ParameterName = "apiVersion"; TestName = "Api Version" }
|
|
||||||
@{ParameterName = "body"; TestName = "Body" }
|
@{ParameterName = "body"; TestName = "Body" }
|
||||||
@{ParameterName = "contentType"; TestName = "Content Type" }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
It "<TestName> parameter cannot be null or empty" -TestCases $ParameterValidationTestCases {
|
It "<TestName> parameter cannot be null or empty" -TestCases $ParameterValidationTestCases {
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"FolderIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.group-v3",
|
||||||
|
"FolderName": "/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"FolderIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.group-v27",
|
||||||
|
"FolderName": "Templates"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"FolderIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.group-v9",
|
||||||
|
"FolderName": "Discovered virtual machine"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"NetworkIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.network-20",
|
||||||
|
"VirtualizationNetworkName": "VM Network"
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"SiteIdentifier": "8e1c9f53-4973-4a4a-b2dd-1ebb293614d8",
|
||||||
|
"VirtualizationSiteName": "cavc.nc.lab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SiteIdentifier": "15aa0d43-69cd-400a-8b99-fe94bbac3e19",
|
||||||
|
"VirtualizationSiteName": "ncvc.nc.lab"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"ResourcePoolIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.resgroup-8",
|
||||||
|
"ResourcepoolName": "Resources"
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"SiteIdentifier": "8e1c9f53-4973-4a4a-b2dd-1ebb293614d8",
|
||||||
|
"VirtualizationSiteName": "cavc.nc.lab"
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"VmIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.vm-55",
|
||||||
|
"VmName": "TimeSeries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"VmIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.vm-53",
|
||||||
|
"VmName": "AnsibleTarget"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"VmIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.vm-28",
|
||||||
|
"VmName": "cazvm.nc.lab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"VmIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.vm-26",
|
||||||
|
"VmName": "WinTemplate"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"DatastoreClusterIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.group-p44",
|
||||||
|
"DatastoreClusterName": "CA_DS_Cluster"
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-40",
|
||||||
|
"DatastoreName": "MgmtLUN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-23",
|
||||||
|
"DatastoreName": "LabPool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-22",
|
||||||
|
"DatastoreName": "datastore1 (2)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-21",
|
||||||
|
"DatastoreName": "datastore1 (1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-19",
|
||||||
|
"DatastoreName": "datastore1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-41",
|
||||||
|
"DatastoreName": "CA_DS_01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-42",
|
||||||
|
"DatastoreName": "CA_DS_02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-43",
|
||||||
|
"DatastoreName": "CA_DS_03"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-40",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405a18009ded4f84d4177d8893d6",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405a18009ded4f84d4177d8893d6)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 1073741824000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-22",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.mpx.vmhba1:C0:T0:L0",
|
||||||
|
"DeviceName": "Local VMware Disk (mpx.vmhba1:C0:T0:L0)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 42949672960,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-42",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405922cd662dc343d4683d9aecd1",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405922cd662dc343d4683d9aecd1)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-41",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405522c4ad5d65a6d4113d9657dc",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405522c4ad5d65a6d4113d9657dc)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-43",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.600140533d732abd8caed42cfda50ed1",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.600140533d732abd8caed42cfda50ed1)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-40",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405a18009ded4f84d4177d8893d6",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405a18009ded4f84d4177d8893d6)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 1073741824000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-22",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.mpx.vmhba1:C0:T0:L0",
|
||||||
|
"DeviceName": "Local VMware Disk (mpx.vmhba1:C0:T0:L0)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 42949672960,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-42",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405922cd662dc343d4683d9aecd1",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405922cd662dc343d4683d9aecd1)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-41",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.6001405522c4ad5d65a6d4113d9657dc",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.6001405522c4ad5d65a6d4113d9657dc)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DatastoreIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.datastore-43",
|
||||||
|
"DeviceIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.naa.600140533d732abd8caed42cfda50ed1",
|
||||||
|
"DeviceName": "SYNOLOGY iSCSI Disk (naa.600140533d732abd8caed42cfda50ed1)",
|
||||||
|
"HostIdentifiers": [
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"09db6c5b-b956-430f-9589-b58876ca377a.host-12"
|
||||||
|
],
|
||||||
|
"SizeInBytes": 536870912000,
|
||||||
|
"VmIdentifier": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"ClusterIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.domain-c7",
|
||||||
|
"VirtualizationClusterName": "CA Cluster"
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"HostIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"VirtualizationHostName": "caesx3.nc.lab"
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"HostIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.host-18",
|
||||||
|
"VirtualizationHostName": "caesx3.nc.lab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HostIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.host-15",
|
||||||
|
"VirtualizationHostName": "caesx2.nc.lab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HostIdentifier": "09db6c5b-b956-430f-9589-b58876ca377a.host-12",
|
||||||
|
"VirtualizationHostName": "caesx1.nc.lab"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"ConnectionType": "ServerMessageBlock",
|
||||||
|
"Path": "\\\\192.168.1.150\\zBackups",
|
||||||
|
"RepositoryIdentifier": "120355ce-fcd0-4820-a971-787d0470793b",
|
||||||
|
"RepositoryName": "Synology",
|
||||||
|
"StorageType": "NetworkShare"
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#Requires -Modules Pester
|
||||||
|
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||||
|
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
|
||||||
|
|
||||||
|
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
||||||
|
InModuleScope -ModuleName ZertoApiWrapper {
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Unit Tests" {
|
||||||
|
|
||||||
|
BeforeAll {
|
||||||
|
$script:ScriptBlock = (Get-Command $global:function).ScriptBlock
|
||||||
|
}
|
||||||
|
|
||||||
|
It "$global:function should have exactly 14 parameters defined" {
|
||||||
|
(Get-Command $global:function).Parameters.Count | Should -Be 14
|
||||||
|
}
|
||||||
|
|
||||||
|
$ParameterTestCases = @(
|
||||||
|
@{ParameterName = 'UserCredential'; Type = 'pscredential'; Mandatory = $true }
|
||||||
|
)
|
||||||
|
|
||||||
|
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
||||||
|
param($ParameterName, $Type, $Mandatory, $Validation)
|
||||||
|
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Supports 'SupportsShouldProcess'" {
|
||||||
|
Get-Command $global:function | Should -HaveParameter WhatIf
|
||||||
|
Get-Command $global:function | Should -HaveParameter Confirm
|
||||||
|
$script:ScriptBlock | Should -match 'SupportsShouldProcess'
|
||||||
|
$script:ScriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Context "$global:function::Parameter Functional Tests" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Variable -Name here -Scope Global
|
||||||
|
Remove-Variable -Name function -Scope Global
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
SkipPublisherCheck = $true
|
SkipPublisherCheck = $true
|
||||||
}
|
}
|
||||||
Target = 'CurrentUser'
|
Target = 'CurrentUser'
|
||||||
Version = '4.8.1'
|
Version = '4.10.1'
|
||||||
Tags = 'Bootstrap'
|
Tags = 'Bootstrap'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ function Checkpoint-ZertoVpg {
|
|||||||
param(
|
param(
|
||||||
[Parameter(
|
[Parameter(
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Name of the VPG to tag."
|
HelpMessage = "Name of the VPG to tag.",
|
||||||
|
ValueFromPipeline = $true,
|
||||||
|
ValueFromPipelineByPropertyName = $true
|
||||||
)]
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$vpgName,
|
[string[]]$vpgName,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Text to tag the checkpoint with."
|
HelpMessage = "Text to tag the checkpoint with."
|
||||||
@@ -18,16 +20,18 @@ function Checkpoint-ZertoVpg {
|
|||||||
|
|
||||||
begin {
|
begin {
|
||||||
$baseUri = "vpgs"
|
$baseUri = "vpgs"
|
||||||
$vpgIdentifier = $(get-zertovpg -name $vpgName).vpgIdentifier
|
|
||||||
$body = @{"checkpointName" = $checkpointName}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
process {
|
process {
|
||||||
if ($vpgIdentifier) {
|
foreach ($name in $vpgName) {
|
||||||
$uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier
|
$vpgIdentifier = $(get-zertovpg -name $name).vpgIdentifier
|
||||||
Invoke-ZertoRestRequest -uri $uri -body $($body | ConvertTo-Json) -method "POST"
|
if ($vpgIdentifier) {
|
||||||
} else {
|
$uri = "{0}/{1}/Checkpoints" -f $baseUri, $vpgIdentifier
|
||||||
Write-Output "Cannot find VPG named $vpgName. Please check the name and try again."
|
$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."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,20 +18,26 @@ function Edit-ZertoVra {
|
|||||||
ParameterSetName = "StaticIp",
|
ParameterSetName = "StaticIp",
|
||||||
HelpMessage = "Static IP address to assign to the VRA."
|
HelpMessage = "Static IP address to assign to the VRA."
|
||||||
)]
|
)]
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
[string]$vraIpAddress,
|
[string]$vraIpAddress,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "StaticIp",
|
ParameterSetName = "StaticIp",
|
||||||
HelpMessage = "Default gateway to assign to the VRA"
|
HelpMessage = "Default gateway to assign to the VRA"
|
||||||
)]
|
)]
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
[string]$defaultGateway,
|
[string]$defaultGateway,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "StaticIp",
|
ParameterSetName = "StaticIp",
|
||||||
HelpMessage = "Subnetmask to be assigned to the VRA"
|
HelpMessage = "Subnetmask to be assigned to the VRA"
|
||||||
)]
|
)]
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
[string]$subnetMask
|
[string]$subnetMask,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "Updated ESXi host root password."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[securestring]$HostRootPassword
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
@@ -45,8 +51,8 @@ function Edit-ZertoVra {
|
|||||||
|
|
||||||
process {
|
process {
|
||||||
# Create ordered hashtables to be converted later to JSON.
|
# Create ordered hashtables to be converted later to JSON.
|
||||||
$vraUpdate = [ordered]@{}
|
$vraUpdate = [ordered]@{ }
|
||||||
$vraNetwork = [ordered]@{}
|
$vraNetwork = [ordered]@{ }
|
||||||
# If a new group name is specified, update.
|
# If a new group name is specified, update.
|
||||||
if ( $PSBoundParameters.ContainsKey('GroupName')) {
|
if ( $PSBoundParameters.ContainsKey('GroupName')) {
|
||||||
$vraUpdate['GroupName'] = $groupName
|
$vraUpdate['GroupName'] = $groupName
|
||||||
@@ -77,8 +83,14 @@ function Edit-ZertoVra {
|
|||||||
$vraNetwork['VraIPConfigurationTypeApi'] = "Dhcp"
|
$vraNetwork['VraIPConfigurationTypeApi'] = "Dhcp"
|
||||||
$vraUpdate['VraNetworkDataApi'] = $vraNetwork
|
$vraUpdate['VraNetworkDataApi'] = $vraNetwork
|
||||||
}
|
}
|
||||||
|
if ($PSBoundParameters.ContainsKey('HostRootPassword')) {
|
||||||
|
$HostRootCredential = [pscredential]::New('root', $HostRootPassword)
|
||||||
|
$vraUpdate['UsePublicKeyInsteadOfCredentials'] = $false
|
||||||
|
$vraUpdate['HostRootPassword'] = $HostRootCredential.GetNetworkCredential().Password
|
||||||
|
}
|
||||||
|
|
||||||
# -WhatIf processing and submit!
|
# -WhatIf processing and submit!
|
||||||
if ($PSCmdlet.ShouldProcess( "Updating " + $vra.vraName + " with these settings: $($vraUpdate | convertTo-Json)")) {
|
if ($PSCmdlet.ShouldProcess( $vra.vraName )) {
|
||||||
Invoke-ZertoRestRequest -uri $baseUri -body $($vraUpdate | ConvertTo-Json) -method "PUT"
|
Invoke-ZertoRestRequest -uri $baseUri -body $($vraUpdate | ConvertTo-Json) -method "PUT"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,33 +45,37 @@ function Export-ZertoVmNicSetting {
|
|||||||
$null = Remove-ZertoVpgSettingsIdentifier -vpgSettingsIdentifier $settingsId
|
$null = Remove-ZertoVpgSettingsIdentifier -vpgSettingsIdentifier $settingsId
|
||||||
$networkMap = Get-Map -InputObject $networks -key "NetworkIdentifier" -value "VirtualizationNetworkName"
|
$networkMap = Get-Map -InputObject $networks -key "NetworkIdentifier" -value "VirtualizationNetworkName"
|
||||||
foreach ($vm in $vmSettings) {
|
foreach ($vm in $vmSettings) {
|
||||||
$nicInfo = [PSCustomObject]@{
|
if ($vm.nics.count -gt 0) {
|
||||||
VPGName = $group.VPGName
|
foreach ($nic in $vm.nics) {
|
||||||
VMName = $vmMap[$($vm.vmIdentifier)]
|
$nicInfo = [PSCustomObject]@{
|
||||||
NicIdentifier = $vm.nics.NicIdentifier
|
VPGName = $group.VPGName
|
||||||
LiveNetwork = $networkMap[$vm.nics.failover.Hypervisor.NetworkIdentifier]
|
VMName = $vmMap[$vm.vmIdentifier]
|
||||||
LiveShouldReplaceMac = $vm.nics.failover.Hypervisor.ShouldReplaceMacAddress
|
NicIdentifier = $nic.NicIdentifier
|
||||||
LiveIsDHCP = $vm.Nics.failover.Hypervisor.IpConfig.IsDhcp
|
LiveNetwork = $networkMap[$nic.failover.Hypervisor.NetworkIdentifier]
|
||||||
LiveIpAddress = $vm.nics.failover.Hypervisor.IpConfig.StaticIp
|
LiveShouldReplaceMac = $nic.failover.Hypervisor.ShouldReplaceMacAddress
|
||||||
LiveIpSubnetMask = $vm.nics.failover.Hypervisor.IpConfig.SubnetMask
|
LiveIsDHCP = $nic.failover.Hypervisor.IpConfig.IsDhcp
|
||||||
LiveIpDefaultGateway = $vm.nics.failover.Hypervisor.IpConfig.Gateway
|
LiveIpAddress = $nic.failover.Hypervisor.IpConfig.StaticIp
|
||||||
LivePrimaryDns = $vm.nics.failover.Hypervisor.IpConfig.PrimaryDns
|
LiveIpSubnetMask = $nic.failover.Hypervisor.IpConfig.SubnetMask
|
||||||
LiveSecondayDns = $vm.nics.failover.Hypervisor.IpConfig.SecondaryDns
|
LiveIpDefaultGateway = $nic.failover.Hypervisor.IpConfig.Gateway
|
||||||
LiveDnsSuffix = $vm.nics.failover.Hypervisor.DnsSuffix
|
LivePrimaryDns = $nic.failover.Hypervisor.IpConfig.PrimaryDns
|
||||||
TestNetwork = $networkMap[$vm.nics.failoverTest.Hypervisor.NetworkIdentifier]
|
LiveSecondayDns = $nic.failover.Hypervisor.IpConfig.SecondaryDns
|
||||||
TestShouldReplaceMac = $vm.nics.failoverTest.Hypervisor.ShouldReplaceMacAddress
|
LiveDnsSuffix = $nic.failover.Hypervisor.DnsSuffix
|
||||||
TestIsDHCP = $vm.Nics.failoverTest.Hypervisor.IpConfig.IsDhcp
|
TestNetwork = $networkMap[$nic.failoverTest.Hypervisor.NetworkIdentifier]
|
||||||
TestIpAddress = $vm.nics.failoverTest.Hypervisor.IpConfig.StaticIp
|
TestShouldReplaceMac = $nic.failoverTest.Hypervisor.ShouldReplaceMacAddress
|
||||||
TestIpSubnetMask = $vm.nics.failoverTest.Hypervisor.IpConfig.SubnetMask
|
TestIsDHCP = $nic.failoverTest.Hypervisor.IpConfig.IsDhcp
|
||||||
TestIpDefaultGateway = $vm.nics.failoverTest.Hypervisor.IpConfig.Gateway
|
TestIpAddress = $nic.failoverTest.Hypervisor.IpConfig.StaticIp
|
||||||
TestPrimaryDns = $vm.nics.failoverTest.Hypervisor.IpConfig.PrimaryDns
|
TestIpSubnetMask = $nic.failoverTest.Hypervisor.IpConfig.SubnetMask
|
||||||
TestSecondayDns = $vm.nics.failoverTest.Hypervisor.IpConfig.SecondaryDns
|
TestIpDefaultGateway = $nic.failoverTest.Hypervisor.IpConfig.Gateway
|
||||||
TestDnsSuffix = $vm.nics.failoverTest.Hypervisor.DnsSuffix
|
TestPrimaryDns = $nic.failoverTest.Hypervisor.IpConfig.PrimaryDns
|
||||||
|
TestSecondayDns = $nic.failoverTest.Hypervisor.IpConfig.SecondaryDns
|
||||||
|
TestDnsSuffix = $nic.failoverTest.Hypervisor.DnsSuffix
|
||||||
|
}
|
||||||
|
$nicInfo
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$nicInfo
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$nicSettings | Export-Csv -Path $OutputFile
|
$nicSettings | Export-Csv -Path $OutputFile -NoTypeInformation
|
||||||
}
|
}
|
||||||
|
|
||||||
end {
|
end {
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerJournalSizeReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$siteIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Type of target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateSet('azure', 'vcenter', 'vcd', 'scvmm', 'aws')]
|
||||||
|
[string]$recoveryType,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Identifiers of the VMs you want to recover at the target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$vmIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The desired journal history in hours. The default is 24 hours. Limited to a 1 hour up to 720 hours, or the equivalent of 30 days"
|
||||||
|
)]
|
||||||
|
[ValidateRange(1, 720)]
|
||||||
|
[Int]$desiredJournalHistory = 24,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The earliest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is one year ago."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$startDate,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The latest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is the current time."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$endDate
|
||||||
|
)
|
||||||
|
$uri = "planner/reports/stats/journal-size"
|
||||||
|
$body = @{
|
||||||
|
siteIdentifier = $siteIdentifier
|
||||||
|
recoveryType = $recoveryType
|
||||||
|
desiredJournalHistory = $desiredJournalHistory
|
||||||
|
vms = New-Object System.Collections.Generic.List[psobject]
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($startDate) ) {
|
||||||
|
$body['startDate'] = $startDate
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($endDate) ) {
|
||||||
|
$body['endDate'] = $endDate
|
||||||
|
}
|
||||||
|
foreach ($vmId in $vmIdentifier) {
|
||||||
|
$body['vms'].Add(@{'identifier' = $vmId; 'desiredJournalHistory' = $desiredJournalHistory })
|
||||||
|
}
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $uri -method POST -body ($body | ConvertTo-Json)
|
||||||
|
$uri = '{0}?reportId={1}' -f $uri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerNetworkPerformanceReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$siteIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Type of target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateSet('azure', 'vcenter', 'vcd', 'scvmm', 'aws')]
|
||||||
|
[string]$recoveryType,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Identifiers of the VMs you want to recover at the target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$vmIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The desired sample interval in seconds. The default is 3600 seconds (1 Hour). Limited to a 60 second to 86,400 second (24 Hour) interval"
|
||||||
|
)]
|
||||||
|
[ValidateRange(60, 86400)]
|
||||||
|
[Int]$interval = 3600,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The earliest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is one year ago."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$startDate,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The latest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is the current time."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$endDate
|
||||||
|
)
|
||||||
|
$uri = "planner/reports/network-performance"
|
||||||
|
$body = @{
|
||||||
|
siteIdentifier = $siteIdentifier
|
||||||
|
recoveryType = $recoveryType
|
||||||
|
interval = $interval
|
||||||
|
vmIdentifiers = New-Object System.Collections.Generic.List[psobject]
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($startDate) ) {
|
||||||
|
$body['startDate'] = $startDate
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($endDate) ) {
|
||||||
|
$body['endDate'] = $endDate
|
||||||
|
}
|
||||||
|
foreach ($vmId in $vmIdentifier) {
|
||||||
|
$body['vmIdentifiers'].Add($vmId)
|
||||||
|
}
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $uri -method POST -body ($body | ConvertTo-Json)
|
||||||
|
$uri = '{0}?reportId={1}' -f $uri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerSite {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$siteIdentifier
|
||||||
|
)
|
||||||
|
$uri = "planner/sites"
|
||||||
|
if ( -not [String]::IsNullorEmpty($siteIdentifier) ) {
|
||||||
|
$entry = foreach ($id in $siteIdentifier) {
|
||||||
|
"{0}/{1}" -f $uri, $id
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$entry = $uri
|
||||||
|
}
|
||||||
|
foreach ($uri in $entry) {
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerStatsReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$siteIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Type of target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateSet('azure', 'vcenter', 'vcd', 'scvmm', 'aws')]
|
||||||
|
[string]$recoveryType,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Identifiers of the VMs you want to recover at the target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$vmIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The desired journal history in hours. The default is 24 hours. Limited to a 1 hour up to 720 hours, or the equivalent of 30 days"
|
||||||
|
)]
|
||||||
|
[ValidateRange(1, 720)]
|
||||||
|
[Int]$desiredJournalHistory = 24,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The earliest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is one year ago."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$startDate,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The latest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is the current time."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$endDate
|
||||||
|
)
|
||||||
|
$uri = "planner/reports/stats"
|
||||||
|
$body = @{
|
||||||
|
siteIdentifier = $siteIdentifier
|
||||||
|
recoveryType = $recoveryType
|
||||||
|
desiredJournalHistory = $desiredJournalHistory
|
||||||
|
vms = New-Object System.Collections.Generic.List[psobject]
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($startDate) ) {
|
||||||
|
$body['startDate'] = $startDate
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($endDate) ) {
|
||||||
|
$body['endDate'] = $endDate
|
||||||
|
}
|
||||||
|
foreach ($vmId in $vmIdentifier) {
|
||||||
|
$body['vms'].Add(@{'identifier' = $vmId; 'desiredJournalHistory' = $desiredJournalHistory })
|
||||||
|
}
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $uri -method POST -body ($body | ConvertTo-Json)
|
||||||
|
$uri = '{0}?reportId={1}' -f $uri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerWanReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$siteIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Type of target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateSet('azure', 'vcenter', 'vcd', 'scvmm', 'aws')]
|
||||||
|
[string]$recoveryType,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Identifiers of the VMs you want to recover at the target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$vmIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The earliest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is one year ago."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$startDate,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The latest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is the current time."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$endDate
|
||||||
|
)
|
||||||
|
$uri = "planner/reports/stats/wan"
|
||||||
|
$body = @{
|
||||||
|
siteIdentifier = $siteIdentifier
|
||||||
|
recoveryType = $recoveryType
|
||||||
|
vmIdentifiers = New-Object System.Collections.Generic.List[psobject]
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($startDate) ) {
|
||||||
|
$body['startDate'] = $startDate
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($endDate) ) {
|
||||||
|
$body['endDate'] = $endDate
|
||||||
|
}
|
||||||
|
foreach ($vmId in $vmIdentifier) {
|
||||||
|
$body['vmIdentifiers'].Add($vmId)
|
||||||
|
}
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $uri -method POST -body ($body | ConvertTo-Json)
|
||||||
|
$uri = '{0}?reportId={1}' -f $uri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAPlannerZcasReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The site identifier(s) for which to return detailed information."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$siteIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Type of target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateSet('azure', 'vcenter', 'vcd', 'scvmm', 'aws')]
|
||||||
|
[string]$recoveryType,
|
||||||
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Identifiers of the VMs you want to recover at the target recovery site."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$vmIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The earliest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is one year ago."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$startDate,
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "The latest timestamp of an event to return, in RFC 3339 standard. ('1970-01-01T00:00:00Z'). The default is the current time."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]$endDate
|
||||||
|
)
|
||||||
|
$uri = "planner/reports/stats/zcas"
|
||||||
|
$body = @{
|
||||||
|
siteIdentifier = $siteIdentifier
|
||||||
|
recoveryType = $recoveryType
|
||||||
|
vmIdentifiers = New-Object System.Collections.Generic.List[psobject]
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($startDate) ) {
|
||||||
|
$body['startDate'] = $startDate
|
||||||
|
}
|
||||||
|
if ( -not [String]::IsNullOrEmpty($endDate) ) {
|
||||||
|
$body['endDate'] = $endDate
|
||||||
|
}
|
||||||
|
foreach ($vmId in $vmIdentifier) {
|
||||||
|
$body['vmIdentifiers'].Add($vmId)
|
||||||
|
}
|
||||||
|
#$body | ConvertTo-Json
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $uri -method POST -body ($body | ConvertTo-Json)
|
||||||
|
#Start-Sleep 10
|
||||||
|
$uri = '{0}?reportId={1}' -f $uri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $uri
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAProtectedVm {
|
||||||
|
[cmdletbinding(DefaultParameterSetName = "AllVMs")]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "AllVMs",
|
||||||
|
HelpMessage = "Use this switch when you want a list of all protected VMs. Please be warned this list can be quite large."
|
||||||
|
)]
|
||||||
|
[switch]$AllVms,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "IndividualVMs",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "A list of VM identifiers to query"
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$VMIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "IndividualVMs",
|
||||||
|
HelpMessage = "Specify this switch when you would like protected vms' volume information returned"
|
||||||
|
)]
|
||||||
|
[switch]$Volumes
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
$BaseUri = "monitoring/protected-vms"
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
"AllVMs" {
|
||||||
|
Invoke-ZARestRequest -uri $BaseUri
|
||||||
|
}
|
||||||
|
|
||||||
|
"IndividualVMs" {
|
||||||
|
foreach ($identifier in $VMIdentifier) {
|
||||||
|
if ($Volumes.IsPresent) {
|
||||||
|
$Uri = "{0}/{1}/volumes" -f $BaseUri, $identifier
|
||||||
|
} else {
|
||||||
|
$uri = $Uri = "{0}/{1}" -f $BaseUri, $identifier
|
||||||
|
}
|
||||||
|
Invoke-ZARestRequest -uri $Uri
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
End {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Get-ZAProtectedVmReport {
|
||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "GenerateReport",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "A list of VM identifiers to include in the report."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]$VMIdentifier
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
$BaseUri = "monitoring/protected-vms"
|
||||||
|
$Body = @{
|
||||||
|
vmsIdentifiers = $VMIdentifier
|
||||||
|
}
|
||||||
|
$reportId = Invoke-ZARestRequest -uri $BaseUri -method POST -body ($Body | ConvertTo-Json)
|
||||||
|
Start-Sleep 1
|
||||||
|
$Uri = "{0}?reportId={1}" -f $BaseUri, $reportId.reportId
|
||||||
|
Invoke-ZARestRequest -uri $Uri
|
||||||
|
}
|
||||||
|
|
||||||
|
End {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,12 +26,6 @@ function Get-ZertoRecoveryReport {
|
|||||||
)]
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$pageSize,
|
[string]$pageSize,
|
||||||
[Parameter(
|
|
||||||
ParameterSetName = "filter",
|
|
||||||
HelpMessage = "The internal identifier of the VPG. You can specify more than one VPG, separated by commas."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[string]$vpgIdentifier,
|
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "filter",
|
ParameterSetName = "filter",
|
||||||
HelpMessage = "The name of the VPG. You can specify more than one VPG, separated by commas."
|
HelpMessage = "The name of the VPG. You can specify more than one VPG, separated by commas."
|
||||||
|
|||||||
@@ -52,6 +52,11 @@ function Get-ZertoVirtualizationSite {
|
|||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "The identifier of the Zerto Virtual Manager site."
|
HelpMessage = "The identifier of the Zerto Virtual Manager site."
|
||||||
)]
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "repositories",
|
||||||
|
Mandatory = $true,
|
||||||
|
HelpMessage = "The identifier of the Zerto Virtual Manager site."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[Alias("siteId")]
|
[Alias("siteId")]
|
||||||
[string]$siteIdentifier,
|
[string]$siteIdentifier,
|
||||||
@@ -121,33 +126,34 @@ function Get-ZertoVirtualizationSite {
|
|||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Return all VMs at the selected site."
|
HelpMessage = "Return all VMs at the selected site."
|
||||||
)]
|
)]
|
||||||
[switch]$vms
|
[switch]$vms,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "repositories",
|
||||||
|
Mandatory = $true,
|
||||||
|
HelpMessage = "The identifier of the Zerto Virtual Manager site."
|
||||||
|
)]
|
||||||
|
[switch]$repositories
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
$baseUri = "virtualizationsites"
|
|
||||||
$returnObject = @()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
process {
|
process {
|
||||||
# Return information based on ParameterSetName invoked.
|
# Return information based on ParameterSetName invoked.
|
||||||
|
$baseUri = "virtualizationsites"
|
||||||
switch ( $PSCmdlet.ParameterSetName ) {
|
switch ( $PSCmdlet.ParameterSetName ) {
|
||||||
|
|
||||||
# If no ParameterSetName is specified, return all data
|
# If no ParameterSetName is specified, return all data
|
||||||
"main" {
|
"main" {
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $baseUri
|
$uri = $baseUri
|
||||||
}
|
}
|
||||||
|
|
||||||
# If devices is specified along with a hostId, build return just that host information, otherwise return all devices at the site
|
# If devices is specified along with a hostId, build return just that host information, otherwise return all devices at the site
|
||||||
#TODO - remove foreach, only one siteIdentifier can be specified.
|
|
||||||
"devices" {
|
"devices" {
|
||||||
$returnObject = foreach ( $id in $siteIdentifier ) {
|
if ( $PSBoundParameters.ContainsKey( "hostIdentifier" ) ) {
|
||||||
if ( $PSBoundParameters.ContainsKey( "hostIdentifier" ) ) {
|
$uri = "{0}/{1}/devices?hostIdentifier={2}" -f $baseUri, $siteIdentifier, $hostIdentifier
|
||||||
$uri = "{0}/{1}/devices?hostIdentifier={2}" -f $baseUri, $siteIdentifier, $hostIdentifier
|
} else {
|
||||||
} else {
|
$uri = "{0}/{1}/devices" -f $baseUri, $siteIdentifier
|
||||||
$uri = "{0}/{1}/devices" -f $baseUri, $siteIdentifier
|
|
||||||
}
|
|
||||||
Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,24 +164,22 @@ function Get-ZertoVirtualizationSite {
|
|||||||
} else {
|
} else {
|
||||||
$uri = "{0}/{1}/hosts" -f $baseUri, $siteIdentifier
|
$uri = "{0}/{1}/hosts" -f $baseUri, $siteIdentifier
|
||||||
}
|
}
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# If siteIdentifier is specified, return information for that site.
|
# If siteIdentifier is specified, return information for that site.
|
||||||
"siteIdentifier" {
|
"siteIdentifier" {
|
||||||
$uri = "{0}/{1}" -f $baseUri, $siteIdentifier
|
$uri = "{0}/{1}" -f $baseUri, $siteIdentifier
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# If a different ParameterSetName is selected, use that information to build the URI and return that information
|
# If a different ParameterSetName is selected, use that information to build the URI and return that information
|
||||||
default {
|
default {
|
||||||
$uri = "{0}/{1}/{2}" -f $baseUri, $siteIdentifier, $PSCmdlet.ParameterSetName.ToLower()
|
$uri = "{0}/{1}/{2}" -f $baseUri, $siteIdentifier, $PSCmdlet.ParameterSetName.ToLower()
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Invoke-ZertoRestRequest -uri $uri
|
||||||
}
|
}
|
||||||
|
|
||||||
end {
|
end {
|
||||||
return $returnObject
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,7 +160,6 @@ function Get-ZertoVpg {
|
|||||||
)
|
)
|
||||||
begin {
|
begin {
|
||||||
$baseUri = "vpgs"
|
$baseUri = "vpgs"
|
||||||
$returnObject = @()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
@@ -169,14 +168,13 @@ function Get-ZertoVpg {
|
|||||||
|
|
||||||
# When called with no parameters, return all values
|
# When called with no parameters, return all values
|
||||||
"main" {
|
"main" {
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $baseUri
|
$uri = $baseUri
|
||||||
}
|
}
|
||||||
|
|
||||||
# When called with protectionGroupIdentifier, query for each id provided
|
# When called with protectionGroupIdentifier, query for each id provided
|
||||||
"protectionGroupIdentifier" {
|
"protectionGroupIdentifier" {
|
||||||
$returnObject = foreach ( $vpgId in $protectionGroupIdentifier ) {
|
$uri = foreach ( $vpgId in $protectionGroupIdentifier ) {
|
||||||
$uri = "{0}/{1}" -f $baseUri, $vpgId
|
"{0}/{1}" -f $baseUri, $vpgId
|
||||||
Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +183,7 @@ function Get-ZertoVpg {
|
|||||||
$filter = $false
|
$filter = $false
|
||||||
if ( $PSBoundParameters.ContainsKey("startDate") -or $PSBoundParameters.ContainsKey("endDate") ) {
|
if ( $PSBoundParameters.ContainsKey("startDate") -or $PSBoundParameters.ContainsKey("endDate") ) {
|
||||||
$filter = $true
|
$filter = $true
|
||||||
$filterTable = @{}
|
$filterTable = @{ }
|
||||||
foreach ( $param in $PSBoundParameters.GetEnumerator() ) {
|
foreach ( $param in $PSBoundParameters.GetEnumerator() ) {
|
||||||
if ( $param.key -eq "startDate" -or $param.key -eq "endDate") {
|
if ( $param.key -eq "startDate" -or $param.key -eq "endDate") {
|
||||||
$filterTable[$param.key] = $param.value
|
$filterTable[$param.key] = $param.value
|
||||||
@@ -193,21 +191,19 @@ function Get-ZertoVpg {
|
|||||||
}
|
}
|
||||||
$filter = Get-ZertoApiFilter -filterTable $filterTable
|
$filter = Get-ZertoApiFilter -filterTable $filterTable
|
||||||
}
|
}
|
||||||
$returnObject = foreach ( $id in $protectionGroupIdentifier ) {
|
$uri = foreach ( $id in $protectionGroupIdentifier ) {
|
||||||
if ( $filter ) {
|
if ( $filter ) {
|
||||||
$uri = "{0}/{1}/checkpoints{2}" -f $baseUri, $id, $filter
|
"{0}/{1}/checkpoints{2}" -f $baseUri, $id, $filter
|
||||||
} else {
|
} else {
|
||||||
$uri = "{0}/{1}/checkpoints" -f $baseUri, $id
|
"{0}/{1}/checkpoints" -f $baseUri, $id
|
||||||
}
|
}
|
||||||
Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# When stats are requested
|
# When stats are requested
|
||||||
"stats" {
|
"stats" {
|
||||||
$returnObject = foreach ( $id in $protectionGroupIdentifier ) {
|
$uri = foreach ( $id in $protectionGroupIdentifier ) {
|
||||||
$uri = "{0}/{1}/checkpoints/stats" -f $baseUri, $id
|
"{0}/{1}/checkpoints/stats" -f $baseUri, $id
|
||||||
Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,18 +211,18 @@ function Get-ZertoVpg {
|
|||||||
"filter" {
|
"filter" {
|
||||||
$filter = Get-ZertoApiFilter -filterTable $PSBoundParameters
|
$filter = Get-ZertoApiFilter -filterTable $PSBoundParameters
|
||||||
$uri = "{0}{1}" -f $baseUri, $filter
|
$uri = "{0}{1}" -f $baseUri, $filter
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Default is to build URI based on ParameterSetName and return results.
|
# Default is to build URI based on ParameterSetName and return results.
|
||||||
default {
|
default {
|
||||||
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
|
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
|
||||||
$returnObject = Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach ($entry in $uri) {
|
||||||
|
Invoke-ZertoRestRequest -uri $entry
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
End {
|
End {
|
||||||
return $returnObject
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ function Get-ZertoVpgSetting {
|
|||||||
ValueFromPipelineByPropertyName = $true,
|
ValueFromPipelineByPropertyName = $true,
|
||||||
ValueFromRemainingArguments = $true,
|
ValueFromRemainingArguments = $true,
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "The identifier of the VPG settings object for which information is retrieved."
|
HelpMessage = "The identifier of the VPG settings object for which information is retrieved. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error."
|
||||||
)]
|
)]
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "dayOfWeek",
|
ParameterSetName = "dayOfWeek",
|
||||||
@@ -149,31 +149,39 @@ function Get-ZertoVpgSetting {
|
|||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "The identifier of the VPG settings object for which information is retrieved."
|
HelpMessage = "The identifier of the VPG settings object for which information is retrieved."
|
||||||
)]
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "ltr",
|
||||||
|
ValueFromPipeline = $true,
|
||||||
|
ValueFromPipelineByPropertyName = $true,
|
||||||
|
ValueFromRemainingArguments = $true,
|
||||||
|
Mandatory = $true,
|
||||||
|
HelpMessage = "The identifier of the VPG settings object for which information is retrieved."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[Alias("vpgSettingsId", "settingsId")]
|
[Alias("vpgSettingsId", "settingsId")]
|
||||||
[string[]]$vpgSettingsIdentifier,
|
[string[]]$vpgSettingsIdentifier,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "backup",
|
ParameterSetName = "backup",
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Return backup information for VPG identifier specified"
|
HelpMessage = "Return backup information for VPG identifier specified. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error."
|
||||||
)]
|
)]
|
||||||
[switch]$backup,
|
[switch]$backup,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "dayOfWeek",
|
ParameterSetName = "dayOfWeek",
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Get the day of week a backup is scheduled"
|
HelpMessage = "Get the day of week a backup is scheduled. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error."
|
||||||
)]
|
)]
|
||||||
[switch]$dayOfWeek,
|
[switch]$dayOfWeek,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "retentionPeriod",
|
ParameterSetName = "retentionPeriod",
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Get the retention period for a backup"
|
HelpMessage = "Get the retention period for a backup. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error."
|
||||||
)]
|
)]
|
||||||
[switch]$retentionPeriod,
|
[switch]$retentionPeriod,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "schedulerPeriod",
|
ParameterSetName = "schedulerPeriod",
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Get the backup schedule"
|
HelpMessage = "Get the backup schedule. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error."
|
||||||
)]
|
)]
|
||||||
[switch]$schedulerPeriod,
|
[switch]$schedulerPeriod,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
@@ -211,7 +219,8 @@ function Get-ZertoVpgSetting {
|
|||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
HelpMessage = "Get VPG Recovery Settings"
|
HelpMessage = "Get VPG Recovery Settings"
|
||||||
)]
|
)]
|
||||||
[switch]$rcovery,
|
[Alias("rcovery")]
|
||||||
|
[switch]$recovery,
|
||||||
[Parameter(
|
[Parameter(
|
||||||
ParameterSetName = "scripting",
|
ParameterSetName = "scripting",
|
||||||
Mandatory = $true,
|
Mandatory = $true,
|
||||||
@@ -279,7 +288,14 @@ function Get-ZertoVpgSetting {
|
|||||||
)]
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[Alias("volumeId")]
|
[Alias("volumeId")]
|
||||||
[string]$volumeIdentifier
|
[string]$volumeIdentifier,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "ltr",
|
||||||
|
Mandatory = $true,
|
||||||
|
HelpMessage = "Return LTR information for the specified VPG. Please note, this parameter is ONLY available in Zerto version 8.0 and later. Attempting to run this switch against a Zerto Virtual Manager version 7.5 or lower will result in an error."
|
||||||
|
)]
|
||||||
|
[switch]$ltr
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
|
|||||||
@@ -44,15 +44,28 @@ function Import-ZertoVmNicSetting {
|
|||||||
[string]::IsNullOrWhiteSpace($Vm.LiveShouldReplaceMac) -or
|
[string]::IsNullOrWhiteSpace($Vm.LiveShouldReplaceMac) -or
|
||||||
[string]::IsNullOrWhiteSpace($Vm.TestNetwork) -or
|
[string]::IsNullOrWhiteSpace($Vm.TestNetwork) -or
|
||||||
[string]::IsNullOrWhiteSpace($Vm.TestShouldReplaceMac)) {
|
[string]::IsNullOrWhiteSpace($Vm.TestShouldReplaceMac)) {
|
||||||
Write-Error "$($Vm.VMName) does not contain all the required data. Please check the CSV entry for this item and try again." -ErrorAction Continue
|
Write-Error "$($Vm.VMName) does not contain all the required data. Please check the CSV entry for this item and try again. You are required to provide the VPGName, VMName, NicIdentifier, LiveNetwork, and ShouldReplaceMacAddress for each Nic." -ErrorAction Continue
|
||||||
} else {
|
} else {
|
||||||
$uri = "vpgSettings/{0}/vms/{1}" -f $vpgSettingsId, $vmMap[$vm.VMName]
|
$uri = "vpgSettings/{0}/vms/{1}" -f $vpgSettingsId, $vmMap[$vm.VMName]
|
||||||
$VmNicSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsId -vmIdentifier $vmMap[$vm.VMName]
|
$VmNicSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsId -vmIdentifier $vmMap[$vm.VMName]
|
||||||
foreach ($nic in $VmNicSettings.nics) {
|
foreach ($nic in $VmNicSettings.nics) {
|
||||||
if ($nic.NicIdentifier -eq $vm.NicIdentifier) {
|
if ($nic.NicIdentifier -eq $vm.NicIdentifier) {
|
||||||
$nic.failover.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.LiveNetwork]
|
$NicUri = "{0}/nics/{1}" -f $uri, $nic.NicIdentifier
|
||||||
$nic.failover.Hypervisor.ShouldReplaceMacAddress = $vm.LiveShouldReplaceMac
|
Invoke-ZertoRestRequest -uri $NicUri -Method "DELETE" > $null
|
||||||
if ($null -eq $nic.failover.Hypervisor.IpConfig -and ($null -ne $vm.LiveIsDHCP -or $null -ne $vm.LiveIpAddress)) {
|
$nicSettings = Invoke-ZertoRestRequest -uri $NicUri -Method "GET"
|
||||||
|
$nicSettings.failover.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.LiveNetwork]
|
||||||
|
$nicSettings.failover.Hypervisor.ShouldReplaceMacAddress = $vm.LiveShouldReplaceMac
|
||||||
|
if ($vm.LiveIsDHCP -imatch "true") {
|
||||||
|
$IpConfig = [PSCustomObject]@{
|
||||||
|
IsDhcp = $vm.LiveIsDHCP
|
||||||
|
PrimaryDns = $vm.LivePrimaryDns
|
||||||
|
SecondaryDns = $vm.LiveSecondayDns
|
||||||
|
}
|
||||||
|
$nicSettings.failover.Hypervisor.IpConfig = $IpConfig
|
||||||
|
$nicSettings.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix
|
||||||
|
} elseif (($vm.LiveIsDHCP -imatch "false" -or
|
||||||
|
[string]::IsNullOrWhiteSpace($vm.LiveIsDHCP)) -and
|
||||||
|
-not [string]::IsNullOrWhiteSpace($vm.LiveIpAddress)) {
|
||||||
$IpConfig = [PSCustomObject]@{
|
$IpConfig = [PSCustomObject]@{
|
||||||
IsDhcp = $vm.LiveIsDHCP
|
IsDhcp = $vm.LiveIsDHCP
|
||||||
StaticIp = $vm.LiveIpAddress
|
StaticIp = $vm.LiveIpAddress
|
||||||
@@ -61,21 +74,22 @@ function Import-ZertoVmNicSetting {
|
|||||||
PrimaryDns = $vm.LivePrimaryDns
|
PrimaryDns = $vm.LivePrimaryDns
|
||||||
SecondaryDns = $vm.LiveSecondayDns
|
SecondaryDns = $vm.LiveSecondayDns
|
||||||
}
|
}
|
||||||
$nic.failover.Hypervisor.IpConfig = $IpConfig
|
$nicSettings.failover.Hypervisor.IpConfig = $IpConfig
|
||||||
} elseif ($null -eq $nic.failover.Hypervisor.IpConfig -and $null -eq $vm.LiveIsDHCP -and $null -eq $vm.LiveIpAddress) {
|
$nicSettings.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix
|
||||||
$nic.failover.Hypervisor.IpConfig = $null
|
|
||||||
} else {
|
|
||||||
$nic.failover.Hypervisor.IpConfig.IsDhcp = $vm.LiveIsDHCP
|
|
||||||
$nic.failover.Hypervisor.IpConfig.StaticIp = $vm.LiveIpAddress
|
|
||||||
$nic.failover.Hypervisor.IpConfig.SubnetMask = $vm.LiveIpSubnetMask
|
|
||||||
$nic.failover.Hypervisor.IpConfig.Gateway = $vm.LiveIpDefaultGateway
|
|
||||||
$nic.failover.Hypervisor.IpConfig.PrimaryDns = $vm.LivePrimaryDns
|
|
||||||
$nic.failover.Hypervisor.IpConfig.SecondaryDns = $vm.LiveSecondayDns
|
|
||||||
}
|
}
|
||||||
$nic.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix
|
$nicSettings.failoverTest.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.TestNetwork]
|
||||||
$nic.failoverTest.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.TestNetwork]
|
$nicSettings.failoverTest.Hypervisor.ShouldReplaceMacAddress = $vm.TestShouldReplaceMac
|
||||||
$nic.failoverTest.Hypervisor.ShouldReplaceMacAddress = $vm.TestShouldReplaceMac
|
if ($vm.TestIsDHCP -imatch "true" ) {
|
||||||
if ($null -eq $nic.failoverTest.Hypervisor.IpConfig -and ($null -ne $vm.TestIsDHCP -or $null -ne $vm.TestIpAddress)) {
|
$IpConfig = [PsCustomObject]@{
|
||||||
|
IsDhcp = $vm.TestIsDHCP
|
||||||
|
PrimaryDns = $vm.TestPrimaryDns
|
||||||
|
SecondaryDns = $vm.TestSecondayDns
|
||||||
|
}
|
||||||
|
$nicSettings.failoverTest.Hypervisor.IpConfig = $IpConfig
|
||||||
|
$nicSettings.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix
|
||||||
|
} elseif (($vm.TestIsDHCP -imatch "false" -or
|
||||||
|
[string]::IsNullOrWhiteSpace($vm.TestIsDHCP)) -and
|
||||||
|
-not [string]::IsNullOrWhiteSpace($vm.TestIpAddress)) {
|
||||||
$IpConfig = [PsCustomObject]@{
|
$IpConfig = [PsCustomObject]@{
|
||||||
IsDhcp = $vm.TestIsDHCP
|
IsDhcp = $vm.TestIsDHCP
|
||||||
StaticIp = $vm.TestIpAddress
|
StaticIp = $vm.TestIpAddress
|
||||||
@@ -84,24 +98,15 @@ function Import-ZertoVmNicSetting {
|
|||||||
PrimaryDns = $vm.TestPrimaryDns
|
PrimaryDns = $vm.TestPrimaryDns
|
||||||
SecondaryDns = $vm.TestSecondayDns
|
SecondaryDns = $vm.TestSecondayDns
|
||||||
}
|
}
|
||||||
$nic.failoverTest.Hypervisor.IpConfig = $IpConfig
|
$nicSettings.failoverTest.Hypervisor.IpConfig = $IpConfig
|
||||||
} elseif ($null -eq $nic.failoverTest.Hypervisor.IpConfig -and $null -eq $vm.TestIsDHCP -and $null -eq $vm.TestIpAddress) {
|
$nicSettings.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix
|
||||||
$nic.failoverTest.Hypervisor.IpConfig = $null
|
}
|
||||||
} else {
|
Write-Verbose "Putting Updated Config for VM: $($vm.name), NIC: $($nic.nicidentifier) in VPG: $Vpg"
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.IsDhcp = $vm.TestIsDHCP
|
if ($PSCmdlet.ShouldProcess($vm.NicIdentifier, "Updating Nic")) {
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.StaticIp = $vm.TestIpAddress
|
Invoke-ZertoRestRequest -uri $NicUri -Method "PUT" -Body ($nicSettings | ConvertTo-Json -Depth 10) > $null
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.SubnetMask = $vm.TestIpSubnetMask
|
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.Gateway = $vm.TestIpDefaultGateway
|
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.PrimaryDns = $vm.TestPrimaryDns
|
|
||||||
$nic.failoverTest.Hypervisor.IpConfig.SecondaryDns = $vm.TestSecondayDns
|
|
||||||
}
|
}
|
||||||
$nic.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Write-Verbose "Putting Updated Config for VM: $($vm.vmname) in Vpg: $Vpg"
|
|
||||||
if ($PSCmdlet.ShouldProcess($vm.NicIdentifier, "Updating Nic")) {
|
|
||||||
Invoke-ZertoRestRequest -uri $uri -Method "PUT" -Body ($VmNicSettings | ConvertTo-Json -Depth 10) > $null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Write-Verbose "Saving updated configuration for VPG: $Vpg"
|
Write-Verbose "Saving updated configuration for VPG: $Vpg"
|
||||||
|
|||||||
@@ -1,72 +1,169 @@
|
|||||||
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
#TODO - Add ability to installed with root password, Move to Begin, Process, End Format
|
|
||||||
function Install-ZertoVra {
|
function Install-ZertoVra {
|
||||||
[cmdletbinding( SupportsShouldProcess = $true )]
|
[cmdletbinding( SupportsShouldProcess )]
|
||||||
param(
|
param(
|
||||||
[Parameter( Mandatory = $true, HelpMessage = "Host name where the VRA is to be installed." )]
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Host name where the VRA is to be installed."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$hostName,
|
[string]$hostName,
|
||||||
[Parameter( Mandatory = $true, HelpMessage = "Datastore name where the VRA is to be installed." )]
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Datastore name where the VRA is to be installed."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$datastoreName,
|
[string]$datastoreName,
|
||||||
[Parameter( Mandatory = $true, HelpMessage = "Network name the VRA is to be assigned." )]
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Network name the VRA is to be assigned."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$networkName,
|
[string]$networkName,
|
||||||
[Parameter( HelpMessage = "Initial amount of memory to assign to the VRA in GB. Default is 3, Minimum is 1, Maximum is 16" )]
|
[Parameter(
|
||||||
|
HelpMessage = "Initial amount of memory to assign to the VRA in GB. Default is 3, Minimum is 1, Maximum is 16"
|
||||||
|
)]
|
||||||
[ValidateRange(1, 16)]
|
[ValidateRange(1, 16)]
|
||||||
[int]$memoryInGB = 3,
|
[int]$memoryInGB = 3,
|
||||||
[Parameter( HelpMessage = "Bandwidth group to assign to the VRA. If unspecified will assign to the 'default_group'" )]
|
[Parameter(
|
||||||
|
HelpMessage = "Bandwidth group to assign to the VRA. If unspecified will assign to the 'default_group'"
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$groupName,
|
[string]$groupName,
|
||||||
[Parameter( ParameterSetName = "Dhcp", Mandatory = $true, HelpMessage = "Assign a DHCP address to the VRA." )]
|
[Parameter(
|
||||||
|
ParameterSetName = "Dhcp",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Assign a DHCP address to the VRA."
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "DhcpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Assign a DHCP address to the VRA."
|
||||||
|
)]
|
||||||
[switch]$Dhcp,
|
[switch]$Dhcp,
|
||||||
[Parameter( ParameterSetName = "StaticIp", Mandatory = $true, HelpMessage = "Static IP address to assign to the VRA." )]
|
[Parameter(
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
ParameterSetName = "StaticIp",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Static IP address to assign to the VRA."
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "StaticIpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Static IP address to assign to the VRA."
|
||||||
|
)]
|
||||||
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
[string]$vraIpAddress,
|
[string]$vraIpAddress,
|
||||||
[Parameter( ParameterSetName = "StaticIp", Mandatory = $true, HelpMessage = "Default gateway to assign to the VRA" )]
|
[Parameter(
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
ParameterSetName = "StaticIp",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Default gateway to assign to the VRA"
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "StaticIpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Default gateway to assign to the VRA"
|
||||||
|
)]
|
||||||
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
[string]$defaultGateway,
|
[string]$defaultGateway,
|
||||||
[Parameter( ParameterSetName = "StaticIp", Mandatory = $true, HelpMessage = "Subnetmask to be assigned to the VRA" )]
|
[Parameter(
|
||||||
[ValidateScript( {$_ -match [IPAddress]$_ })]
|
ParameterSetName = "StaticIp",
|
||||||
[string]$subnetMask
|
Mandatory,
|
||||||
|
HelpMessage = "Subnetmask to be assigned to the VRA"
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "StaticIpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Subnetmask to be assigned to the VRA"
|
||||||
|
)]
|
||||||
|
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
||||||
|
[string]$subnetMask,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "StaticIpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Use this switch to install the VRA using the root password install method."
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "DhcpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "Use this switch to install the VRA using the root password install method."
|
||||||
|
)]
|
||||||
|
[switch]$UseRootCredential,
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "StaticIpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The password for the root user of the ESXi host where the VRA is to be installed."
|
||||||
|
)]
|
||||||
|
[Parameter(
|
||||||
|
ParameterSetName = "DhcpWithRoot",
|
||||||
|
Mandatory,
|
||||||
|
HelpMessage = "The password for the root user of the ESXi host where the VRA is to be installed."
|
||||||
|
)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[securestring]$HostRootPassword
|
||||||
)
|
)
|
||||||
# Build the VRA Name.
|
|
||||||
$vraName = "Z-VRA-{0}" -f $hostName
|
|
||||||
# If the VRA does not exist, proceed with the installation. If it does exist, bypass and
|
|
||||||
if ( -not (Get-ZertoVra -vraName $vraName) ) {
|
|
||||||
# Get identifiers for each item provided by name.
|
|
||||||
$siteIdentifier = $script:zvmLocalInfo.SiteIdentifier
|
|
||||||
$hostIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -hosts | Where-Object {$_.VirtualizationHostName -eq $hostName} | Select-Object hostIdentifier -ExpandProperty hostIdentifier
|
|
||||||
$networkIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -networks | Where-Object {$_.VirtualizationNetworkName -eq $networkName} | Select-Object NetworkIdentifier -ExpandProperty NetworkIdentifier
|
|
||||||
$datastoreIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -datastores | Where-Object {$_.DatastoreName -eq $datastoreName} | Select-Object DatastoreIdentifier -ExpandProperty DatastoreIdentifier
|
|
||||||
|
|
||||||
# Build the JSON object through an Ordered Hashtable.
|
begin {
|
||||||
$vraBasic = [ordered]@{}
|
|
||||||
$vraBasic['DatastoreIdentifier'] = $datastoreIdentifier.toString()
|
}
|
||||||
if ($PSBoundParameters.ContainsKey('groupName')) {
|
Process {
|
||||||
$vraBasic['GroupName'] = $groupName
|
# Build the VRA Name.
|
||||||
}
|
$vraName = "Z-VRA-{0}" -f $hostName
|
||||||
$vraBasic['HostIdentifier'] = $hostIdentifier.toString()
|
# If the VRA does not exist, proceed with the installation. If it does exist, bypass and
|
||||||
$vraBasic['MemoryInGB'] = $memoryInGB
|
if ( -not (Get-ZertoVra -vraName $vraName) ) {
|
||||||
$vraBasic['NetworkIdentifier'] = $networkIdentifier.toString()
|
# Get identifiers for each item provided by name.
|
||||||
$vraBasic['UsePublicKeyInsteadOfCredentials'] = $true
|
$siteIdentifier = $script:zvmLocalInfo.SiteIdentifier
|
||||||
$vraBasicNetwork = [ordered]@{}
|
$hostIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -hosts | Where-Object { $_.VirtualizationHostName -eq $hostName } | Select-Object hostIdentifier -ExpandProperty hostIdentifier
|
||||||
if ( $PSCmdlet.ParameterSetName -eq "StaticIp" ) {
|
$networkIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -networks | Where-Object { $_.VirtualizationNetworkName -eq $networkName } | Select-Object NetworkIdentifier -ExpandProperty NetworkIdentifier
|
||||||
$vraBasicNetwork['DefaultGateway'] = $defaultGateway.toString()
|
$datastoreIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -datastores | Where-Object { $_.DatastoreName -eq $datastoreName } | Select-Object DatastoreIdentifier -ExpandProperty DatastoreIdentifier
|
||||||
$vraBasicNetwork['SubnetMask'] = $subnetMask.toString()
|
if ($datastoreIdentifier.count -gt 1) {
|
||||||
$vraBasicNetwork['VraIPAddress'] = $vraIpAddress.toString()
|
$hostDevices = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -devices -hostIdentifier $hostIdentifier
|
||||||
$vraBasicNetwork['VraIPConfigurationTypeApi'] = "Static"
|
$datastoreIdentifier = foreach ($identifier in $datastoreIdentifier) {
|
||||||
|
if ($identifier -in $hostDevices.DatastoreIdentifier) {
|
||||||
|
$identifier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($datastoreIdentifier.count -gt 1) {
|
||||||
|
Write-Error "Datastore $datastoreName has more than one identifier associated with it on the specified host. Please review and try again."
|
||||||
|
Break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build the JSON object through an Ordered Hashtable.
|
||||||
|
$vraBasic = [ordered]@{ }
|
||||||
|
$vraBasic['DatastoreIdentifier'] = $datastoreIdentifier.toString()
|
||||||
|
if ($PSBoundParameters.ContainsKey('groupName')) {
|
||||||
|
$vraBasic['GroupName'] = $groupName
|
||||||
|
}
|
||||||
|
$vraBasic['HostIdentifier'] = $hostIdentifier.toString()
|
||||||
|
$vraBasic['MemoryInGB'] = $memoryInGB
|
||||||
|
$vraBasic['NetworkIdentifier'] = $networkIdentifier.toString()
|
||||||
|
$vraBasic['UsePublicKeyInsteadOfCredentials'] = $true
|
||||||
|
$vraBasicNetwork = [ordered]@{ }
|
||||||
|
if ( $PSCmdlet.ParameterSetName -eq "StaticIp" -or $PSCmdlet.ParameterSetName -eq "StaticIpWithRoot") {
|
||||||
|
$vraBasicNetwork['DefaultGateway'] = $defaultGateway.toString()
|
||||||
|
$vraBasicNetwork['SubnetMask'] = $subnetMask.toString()
|
||||||
|
$vraBasicNetwork['VraIPAddress'] = $vraIpAddress.toString()
|
||||||
|
$vraBasicNetwork['VraIPConfigurationTypeApi'] = "Static"
|
||||||
|
} else {
|
||||||
|
$vraBasicNetwork['VraIPConfigurationTypeApi'] = "Dhcp"
|
||||||
|
}
|
||||||
|
$vraBasic['VraNetworkDataApi'] = $vraBasicNetwork
|
||||||
|
if ($PSCmdlet.ParameterSetName -eq "StaticIpWithRoot" -or $PSCmdlet.ParameterSetName -eq "DhcpWithRoot") {
|
||||||
|
$HostRootCredential = [pscredential]::new('root', $HostRootPassword)
|
||||||
|
$vraBasic['UsePublicKeyInsteadOfCredentials'] = $false
|
||||||
|
$vraBasic['HostRootPassword'] = $HostRootCredential.GetNetworkCredential().Password
|
||||||
|
}
|
||||||
|
|
||||||
|
# Leverage WhatIf functionality to see what might happen, if WhatIf is not specified, attempt to install.
|
||||||
|
if ($PSCmdlet.ShouldProcess($hostName)) {
|
||||||
|
Invoke-ZertoRestRequest -uri "vras" -method POST -body $($vraBasic | ConvertTo-Json)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$vraBasicNetwork['VraIPConfigurationTypeApi'] = "Dhcp"
|
Write-Error "Host $hostName already has a VRA installed. Aborting Install Call"
|
||||||
}
|
}
|
||||||
$vraBasic['VraNetworkDataApi'] = $vraBasicNetwork
|
}
|
||||||
|
|
||||||
|
End {
|
||||||
|
|
||||||
# Leverage WhatIf functionality to see what might happen, if WhatIf is not specified, attempt to install.
|
|
||||||
if ($PSCmdlet.ShouldProcess("Preforming operation 'Install-Vra' on Host $hostName with the following data \n $($vraBasic | convertto-json)")) {
|
|
||||||
Invoke-ZertoRestRequest -uri "vras" -method POST -body $($vraBasic | ConvertTo-Json)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Write-Error "Host $hostName already has a VRA installed. Aborting Install Call"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-6
@@ -1,26 +1,38 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
function Invoke-ZARestRequest {
|
function Invoke-ZARestRequest {
|
||||||
[cmdletbinding()]
|
[cmdletbinding()]
|
||||||
param(
|
param(
|
||||||
# Parameter help description
|
# Parameter help description
|
||||||
[Parameter(Mandatory)]
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
Helpmessage = "URI endpoint to be utilized. When submitting the URI, only the endpoint needs to be submitted. Please review the help documentation for examples."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$uri,
|
[string]$uri,
|
||||||
|
[Parameter(
|
||||||
|
Helpmessage = "API method to be used. GET, PUT, POST, or DELETE. Refer to documentation for the API endpoint to ensure the correct method is being used. If unspecified, defaults to GET"
|
||||||
|
)]
|
||||||
[ValidateSet("GET", "PUT", "POST", "DELETE")]
|
[ValidateSet("GET", "PUT", "POST", "DELETE")]
|
||||||
[string]$method = "GET",
|
[string]$method = "GET",
|
||||||
|
[Parameter(
|
||||||
|
Helpmessage = "Body to be submitted to the REST API endpoint. This needs to be submitted in JSON format"
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$body,
|
[string]$body
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[string]$contentType = "application/json"
|
|
||||||
)
|
)
|
||||||
|
# While the API can use XML or JSON, this module is built on JSON functionality. Currently forcing all
|
||||||
|
# content types and language to JSON.
|
||||||
|
[string]$contentType = "application/json"
|
||||||
|
|
||||||
# Check to see if the required variables are present and currently valid
|
# Check to see if the required variables are present and currently valid
|
||||||
if ( -not ((Test-Path variable:script:zaLastActionTime) -and (Test-Path variable:script:zaHeaders)) ) {
|
if ( -not ((Test-Path variable:script:zaLastActionTime) -and (Test-Path variable:script:zaHeaders)) ) {
|
||||||
Throw "Zerto Analytics Connection does not Exist. Please run Connect-ZertoAnalytics first to establish a connection"
|
Throw "Zerto Analytics Connection does not Exist. Please run Connect-ZertoAnalytics first to establish a connection"
|
||||||
} elseif ( (Test-Path variable:script:zaHeaders) -and $([datetime]$script:zaLastActionTime).addMinutes(60) -lt $(get-date) ) {
|
} elseif ( (Test-Path variable:script:zaHeaders) -and $([datetime]$script:zaLastActionTime).addMinutes(60) -lt $(Get-Date) ) {
|
||||||
Throw "Authorization Token has Expired. Please re-authorize to the Zerto Analytics Portal"
|
Throw "Authorization Token has Expired. Please re-authorize to the Zerto Analytics Portal"
|
||||||
} else {
|
} else {
|
||||||
# Update the last action time and submit the request based on PS Version.
|
# Update the last action time and submit the request based on PS Version.
|
||||||
Set-Variable -Name zaLastActionTime -Scope Script -Value $(Get-date).Ticks
|
Set-Variable -Name zaLastActionTime -Scope Script -Value $(Get-Date).Ticks
|
||||||
$submittedUri = "https://analytics.api.zerto.com/v2/{0}" -f $uri
|
$submittedUri = "https://analytics.api.zerto.com/v2/{0}" -f $uri
|
||||||
if ($PSVersionTable.PSVersion.Major -ge 6) {
|
if ($PSVersionTable.PSVersion.Major -ge 6) {
|
||||||
Invoke-RestMethod -Uri $submittedUri -Method $method -Body $body -Headers $Script:zaHeaders -ContentType $contentType -TimeoutSec 100
|
Invoke-RestMethod -Uri $submittedUri -Method $method -Body $body -Headers $Script:zaHeaders -ContentType $contentType -TimeoutSec 100
|
||||||
+26
-7
@@ -1,20 +1,39 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
function Invoke-ZertoRestRequest {
|
function Invoke-ZertoRestRequest {
|
||||||
[cmdletbinding()]
|
[cmdletbinding()]
|
||||||
param(
|
param(
|
||||||
|
# Parameter help description
|
||||||
|
[Parameter(
|
||||||
|
Helpmessage = "API method to be used. GET, PUT, POST, or DELETE. Refer to documentation for the API endpoint to ensure the correct method is being used. If unspecified, defaults to GET"
|
||||||
|
)]
|
||||||
[ValidateSet("GET", "PUT", "POST", "DELETE")]
|
[ValidateSet("GET", "PUT", "POST", "DELETE")]
|
||||||
[string]$method = "GET",
|
[string]$method = "GET",
|
||||||
[Parameter(Mandatory)]
|
[Parameter(
|
||||||
|
Mandatory,
|
||||||
|
Helpmessage = "URI endpoint to be utilized. When submitting the URI, only the endpoint needs to be submitted. Please review the help documentation for examples."
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$uri,
|
[string]$uri,
|
||||||
[ValidateNotNullOrEmpty()]
|
[Parameter(
|
||||||
[string]$apiVersion = "v1",
|
Helpmessage = "Body to be submitted to the REST API endpoint. This needs to be submitted in JSON format"
|
||||||
|
)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[string]$body,
|
[string]$body,
|
||||||
[ValidateNotNullOrEmpty()]
|
[Parameter(
|
||||||
[string]$contentType = "application/json",
|
Helpmessage = "PSCredential object. This is ONLY used when authenticating with the ZVM. No other endpoints require this and generally is not used."
|
||||||
|
)]
|
||||||
[PSCredential]$credential,
|
[PSCredential]$credential,
|
||||||
|
[Parameter(
|
||||||
|
Helpmessage = "Use this switch if you would like the request headers returned along with the body. Useful for troubleshooting to get HTTP error codes."
|
||||||
|
)]
|
||||||
[switch]$returnHeaders
|
[switch]$returnHeaders
|
||||||
)
|
)
|
||||||
|
# API version. Currently this is locked at v1 in all versions of Zerto. Should this change, will look
|
||||||
|
# at making this as parameter to be selected during function call.
|
||||||
|
$apiVersion = "v1"
|
||||||
|
# While the API can use XML or JSON, this module is built on JSON functionality. Currently forcing all
|
||||||
|
# content types and language to JSON.
|
||||||
|
$contentType = "application/json"
|
||||||
$callerErrorActionPreference = $ErrorActionPreference
|
$callerErrorActionPreference = $ErrorActionPreference
|
||||||
# If the ZVM server and Port not defined, Stop Call
|
# If the ZVM server and Port not defined, Stop Call
|
||||||
if ( -not ((Test-Path variable:script:zvmServer) -and (Test-Path variable:script:zvmPort)) ) {
|
if ( -not ((Test-Path variable:script:zvmServer) -and (Test-Path variable:script:zvmPort)) ) {
|
||||||
@@ -22,7 +41,7 @@ function Invoke-ZertoRestRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# If the Headers exist and the Last action was more than 30 minutes ago, Session is Expired
|
# If the Headers exist and the Last action was more than 30 minutes ago, Session is Expired
|
||||||
if ( (Test-Path variable:script:zvmHeaders) -and $([datetime]$script:zvmLastAction).addMinutes(30) -lt $(get-date) ) {
|
if ( (Test-Path variable:script:zvmHeaders) -and $([datetime]$script:zvmLastAction).addMinutes(30) -lt $(Get-Date) ) {
|
||||||
Throw "Authorization Token has Expired. Please re-authorize to the Zerto Virtual Manager"
|
Throw "Authorization Token has Expired. Please re-authorize to the Zerto Virtual Manager"
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -30,7 +49,7 @@ function Invoke-ZertoRestRequest {
|
|||||||
$submittedURI = "https://{0}:{1}/{2}/{3}" -f $script:zvmServer, $script:zvmPort, $apiVersion, $uri
|
$submittedURI = "https://{0}:{1}/{2}/{3}" -f $script:zvmServer, $script:zvmPort, $apiVersion, $uri
|
||||||
try {
|
try {
|
||||||
# Set the zvmLastAction time and try to submit the REST Request
|
# Set the zvmLastAction time and try to submit the REST Request
|
||||||
$script:zvmLastAction = (get-date).Ticks
|
$script:zvmLastAction = (Get-Date).Ticks
|
||||||
# If running PwSh - Use this Invoke-RestMethod with passed Variables
|
# If running PwSh - Use this Invoke-RestMethod with passed Variables
|
||||||
if ($PSVersionTable.PSVersion.Major -ge 6) {
|
if ($PSVersionTable.PSVersion.Major -ge 6) {
|
||||||
$apiRequestResults = Invoke-RestMethod -Uri $submittedURI -Headers $script:zvmHeaders -Method $method -Body $body -ContentType $contentType -Credential $credential -SkipCertificateCheck -ResponseHeadersVariable responseHeaders -TimeoutSec 100
|
$apiRequestResults = Invoke-RestMethod -Uri $submittedURI -Headers $script:zvmHeaders -Method $method -Body $body -ContentType $contentType -Credential $credential -SkipCertificateCheck -ResponseHeadersVariable responseHeaders -TimeoutSec 100
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
||||||
|
function Set-ZertoUserCredential {
|
||||||
|
[cmdletbinding(
|
||||||
|
SupportsShouldProcess,
|
||||||
|
ConfirmImpact = 'High'
|
||||||
|
)]
|
||||||
|
param(
|
||||||
|
[Parameter(
|
||||||
|
HelpMessage = "PSCredential Object that contains the username and password for the updated credentials.",
|
||||||
|
Mandatory
|
||||||
|
)]
|
||||||
|
[pscredential]$UserCredential
|
||||||
|
)
|
||||||
|
|
||||||
|
begin {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
process {
|
||||||
|
$uri = '/localsite/virtualizationsettings'
|
||||||
|
$body = @{
|
||||||
|
Credentials = @{
|
||||||
|
UserName = $UserCredential.UserName
|
||||||
|
Password = $UserCredential.GetNetworkCredential().Password
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( $PSCmdlet.ShouldProcess( $script:zvmServer, "Updating hypervisor service account credentials" )) {
|
||||||
|
Invoke-ZertoRestRequest -uri $uri -Method PUT -body ($body | ConvertTo-Json)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
end {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
-8
@@ -18,11 +18,11 @@ pr:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Windows PowerShell 5.1 Build Job
|
# Windows PowerShell 5.1 Build Job
|
||||||
- job: Build_PS_Win2016
|
- job: Build_PS_Windows
|
||||||
timeoutInMinutes: 10
|
timeoutInMinutes: 10
|
||||||
cancelTimeoutInMinutes: 2
|
cancelTimeoutInMinutes: 2
|
||||||
pool:
|
pool:
|
||||||
vmImage: vs2017-win2016
|
vmImage: windows-latest
|
||||||
steps:
|
steps:
|
||||||
# Run build.ps1 script in PowerShell Core
|
# Run build.ps1 script in PowerShell Core
|
||||||
- powershell: |
|
- powershell: |
|
||||||
@@ -46,11 +46,11 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
# Windows PowerShell Core Build Job
|
# Windows PowerShell Core Build Job
|
||||||
- job: Build_PSCore_Win2016
|
- job: Build_PSCore_Windows
|
||||||
timeoutInMinutes: 10
|
timeoutInMinutes: 10
|
||||||
cancelTimeoutInMinutes: 2
|
cancelTimeoutInMinutes: 2
|
||||||
pool:
|
pool:
|
||||||
vmImage: vs2017-win2016
|
vmImage: windows-latest
|
||||||
steps:
|
steps:
|
||||||
# Run build.ps1 script in PowerShell Core
|
# Run build.ps1 script in PowerShell Core
|
||||||
- pwsh: |
|
- pwsh: |
|
||||||
@@ -73,11 +73,11 @@ jobs:
|
|||||||
condition: always()
|
condition: always()
|
||||||
|
|
||||||
# Linux Build Job
|
# Linux Build Job
|
||||||
- job: Build_PSCore_Ubuntu1604
|
- job: Build_PSCore_Ubuntu
|
||||||
timeoutInMinutes: 10
|
timeoutInMinutes: 10
|
||||||
cancelTimeoutInMinutes: 2
|
cancelTimeoutInMinutes: 2
|
||||||
pool:
|
pool:
|
||||||
vmImage: ubuntu-16.04
|
vmImage: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# Run build.ps1 script in PowerShell Core
|
# Run build.ps1 script in PowerShell Core
|
||||||
- pwsh: |
|
- pwsh: |
|
||||||
@@ -112,11 +112,11 @@ jobs:
|
|||||||
condition: always()
|
condition: always()
|
||||||
|
|
||||||
# MacOS Build Job
|
# MacOS Build Job
|
||||||
- job: Build_PSCore_MacOS1013
|
- job: Build_PSCore_MacOS
|
||||||
timeoutInMinutes: 10
|
timeoutInMinutes: 10
|
||||||
cancelTimeoutInMinutes: 2
|
cancelTimeoutInMinutes: 2
|
||||||
pool:
|
pool:
|
||||||
vmImage: xcode9-macos10.13
|
vmImage: macOS-latest
|
||||||
steps:
|
steps:
|
||||||
# Run build.ps1 script in PowerShell Core
|
# Run build.ps1 script in PowerShell Core
|
||||||
- pwsh: |
|
- pwsh: |
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Add a tagged checkpoint to a specified VPG
|
|||||||
## SYNTAX
|
## SYNTAX
|
||||||
|
|
||||||
```
|
```
|
||||||
Checkpoint-ZertoVpg [-vpgName] <String> [-checkpointName] <String> [<CommonParameters>]
|
Checkpoint-ZertoVpg [-vpgName] <String[]> [-checkpointName] <String> [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
@@ -49,14 +49,14 @@ Accept wildcard characters: False
|
|||||||
Name of the VPG to tag.
|
Name of the VPG to tag.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String
|
Type: String[]
|
||||||
Parameter Sets: (All)
|
Parameter Sets: (All)
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
Position: 0
|
Position: 0
|
||||||
Default value: None
|
Default value: None
|
||||||
Accept pipeline input: False
|
Accept pipeline input: True (ByPropertyName, ByValue)
|
||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Copy an existing VPG settings object to create a new VPG with the same settings.
|
|||||||
## SYNTAX
|
## SYNTAX
|
||||||
|
|
||||||
```
|
```
|
||||||
Copy-ZertoVpg -SourceVpgName <String> -NewVpgName <String> [-VMs] <String[]> [-WhatIf] [-Confirm]
|
Copy-ZertoVpg [-SourceVpgName] <String> [-NewVpgName] <String> [-VMs] <String[]> [-WhatIf] [-Confirm]
|
||||||
[<CommonParameters>]
|
[<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ Parameter Sets: (All)
|
|||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
Position: Named
|
Position: 2
|
||||||
Default value: None
|
Default value: None
|
||||||
Accept pipeline input: False
|
Accept pipeline input: False
|
||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
@@ -62,7 +62,7 @@ Parameter Sets: (All)
|
|||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
Position: Named
|
Position: 1
|
||||||
Default value: None
|
Default value: None
|
||||||
Accept pipeline input: False
|
Accept pipeline input: False
|
||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
@@ -77,7 +77,7 @@ Parameter Sets: (All)
|
|||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
Position: 2
|
Position: 3
|
||||||
Default value: None
|
Default value: None
|
||||||
Accept pipeline input: False
|
Accept pipeline input: False
|
||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
|
|||||||
+26
-2
@@ -8,13 +8,13 @@ schema: 2.0.0
|
|||||||
# Edit-ZertoVra
|
# Edit-ZertoVra
|
||||||
|
|
||||||
## SYNOPSIS
|
## SYNOPSIS
|
||||||
Updates a VRA with updated settings
|
Updates a VRA with updated settings. Use of this function will cause a reboot of the associated VRA.
|
||||||
|
|
||||||
## SYNTAX
|
## SYNTAX
|
||||||
|
|
||||||
```
|
```
|
||||||
Edit-ZertoVra -vraIdentifier <String> [-groupName <String>] [-vraIpAddress <String>] [-defaultGateway <String>]
|
Edit-ZertoVra -vraIdentifier <String> [-groupName <String>] [-vraIpAddress <String>] [-defaultGateway <String>]
|
||||||
[-subnetMask <String>] [-WhatIf] [-Confirm] [<CommonParameters>]
|
[-subnetMask <String>] [-HostRootPassword <SecureString>] [-WhatIf] [-Confirm] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
@@ -24,6 +24,8 @@ It is possible to update the Bandwidth group with the -groupName setting. If the
|
|||||||
|
|
||||||
It is possible to update the static IP address, default gateway, or subnetmask.
|
It is possible to update the static IP address, default gateway, or subnetmask.
|
||||||
|
|
||||||
|
This function can be used if the VRA was installed with host credentials to update the password to connect to the host if it has changed.
|
||||||
|
|
||||||
It is suggested that you use Get-ZertoVra to get the vraIdentifer parameter.
|
It is suggested that you use Get-ZertoVra to get the vraIdentifer parameter.
|
||||||
|
|
||||||
## EXAMPLES
|
## EXAMPLES
|
||||||
@@ -56,6 +58,13 @@ PS C:\>Edit-ZertoVra -vraIdentifier $vraIdentifier -defaultGateway "192.168.1.1"
|
|||||||
|
|
||||||
Updates the VRA default gateway to 192.168.1.1
|
Updates the VRA default gateway to 192.168.1.1
|
||||||
|
|
||||||
|
### Example 5
|
||||||
|
```powershell
|
||||||
|
PS C:\>Edit-ZertoVra -HostRootPassword $HostRootPassword
|
||||||
|
```
|
||||||
|
|
||||||
|
Updates the VRA default gateway to 192.168.1.1
|
||||||
|
|
||||||
## PARAMETERS
|
## PARAMETERS
|
||||||
|
|
||||||
### -defaultGateway
|
### -defaultGateway
|
||||||
@@ -89,6 +98,21 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### -HostRootPassword
|
||||||
|
Updated ESXi host root password.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SecureString
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
### -subnetMask
|
### -subnetMask
|
||||||
Subnetmask to be assigned to the VRA
|
Subnetmask to be assigned to the VRA
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,163 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerJournalSizeReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerJournalSizeReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Create a report request to retrieve the Journal Size for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerJournalSizeReport [-siteIdentifier] <String> [-recoveryType] <String> [-vmIdentifier] <String[]>
|
||||||
|
[[-desiredJournalHistory] <Int32>] [[-startDate] <String>] [[-endDate] <String>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Create a report request to retrieve the Journal Size for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerJournalSizeReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2'
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Journal report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. The report will cover a Journal History of 24 hours. This will use all data contained in Zerto Analytics to create the Journal report.
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerJournalSizeReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2' -desiredJournalHistory 96
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Journal report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. The report will cover a Journal History of 96 hours (4 days). This will use all data contained in Zerto Analytics to create the Journal report.
|
||||||
|
|
||||||
|
### Example 3
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerJournalSizeReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2' -desiredJournalHistory 96 -startDate '2020-01-01'
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Journal report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. The report will cover a Journal History of 96 hours (4 days). This will use all data starting from Jan 1st to today contained in Zerto Analytics to create the Journal report.
|
||||||
|
|
||||||
|
### Example 4
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerJournalSizeReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2' -desiredJournalHistory 96 -startDate '2020-01-01' -endDate '2020-01-30'
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Journal report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. The report will cover a Journal History of 96 hours (4 days). This will use all data starting from Jan 1st to Jan 30th contained in Zerto Analytics to create the Journal report.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -desiredJournalHistory
|
||||||
|
The desired journal history in hours.
|
||||||
|
The default is 24 hours.
|
||||||
|
Limited to a 1 hour up to 720 hours, or the equivalent of 30 days
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: Int32
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: 24
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -endDate
|
||||||
|
The latest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is the current time.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 6
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -recoveryType
|
||||||
|
Type of target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -startDate
|
||||||
|
The earliest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is one year ago.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 5
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -vmIdentifier
|
||||||
|
Identifiers of the VMs you want to recover at the target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Planner Journal Size Report - Post](https://docs.api.zerto.com/#/Planner/post_v2_planner_reports_stats_journal_size)
|
||||||
|
[Zerto Planner Journal Size Report - Get](https://docs.api.zerto.com/#/Planner/get_v2_planner_reports_stats_journal_size)
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerNetworkPerformanceReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerNetworkPerformanceReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Create a report request to retrieve the Network Performance for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerNetworkPerformanceReport [-siteIdentifier] <String> [-recoveryType] <String>
|
||||||
|
[-vmIdentifier] <String[]> [[-interval] <Int32>] [[-startDate] <String>] [[-endDate] <String>]
|
||||||
|
[<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Create a report request to retrieve the Network Performance for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerNetworkPerformanceReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2'
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Network Performance report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. This will use all data contained in Zerto Analytics to create the Journal report.
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerNetworkPerformanceReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2' -startDate '2020-01-01' -interval 86400
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Network Performance report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. This will use data contained in Zerto Analytics starting Jan 1st, 2020 ending on the day the report is run to create the Journal report. Sample reporting interval will be 86400 seconds (1 day).
|
||||||
|
|
||||||
|
### Example 3
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerNetworkPerformanceReport -siteIdentifier '1234567890-01923141' -recoveryType VMware -vmIdentifier 'vmIdentifier1', 'vmIdentifier2' -startDate '2020-01-01' -endDate '2020-01-30' -interval 86400
|
||||||
|
```
|
||||||
|
|
||||||
|
Gets a Network Performance report for VMs with identifiers 'vmIdentifier1' and 'vmIdentifier2' at source siteIdentifier '1234567890-01923141' where the target recovery location is VMware. This will use data contained in Zerto Analytics starting Jan 1st, 2020 ending on Jan 30th, 2020 to create the Journal report. Sample reporting interval will be 86400 seconds (1 day).
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -endDate
|
||||||
|
The latest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is the current time.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 6
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -interval
|
||||||
|
The desired sample interval in seconds.
|
||||||
|
The default is 3600 seconds (1 Hour).
|
||||||
|
Limited to a 60 second to 86,400 second (24 Hour) interval
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: Int32
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: 3600
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -recoveryType
|
||||||
|
Type of target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -startDate
|
||||||
|
The earliest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is one year ago.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 5
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -vmIdentifier
|
||||||
|
Identifiers of the VMs you want to recover at the target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Planner Network-Performance API Endpoint - POST](https://docs.api.zerto.com/#/Planner/post_v2_planner_reports_network_performance)
|
||||||
|
[Zerto Analytics Planner Network-Performance API Endpoint - GET](https://docs.api.zerto.com/#/Planner/get_v2_planner_reports_network_performance)
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerSite.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerSite
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Retrieve all active Planner sites for a specific account - includes ID, Name and Type or retrieves datacenter, host, and VMs for a specific site.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerSite [[-siteIdentifier] <String[]>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Retrieve all active Planner sites for a specific account - includes ID, Name and Type or retrieves datacenter, host, and VMs for a specific site.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerSite
|
||||||
|
```
|
||||||
|
|
||||||
|
Retrieve all active Planner sites for a specific account
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerSite -siteIdentifier '0123-45676-09876'
|
||||||
|
```
|
||||||
|
|
||||||
|
Retrieves datacenter, host, and VMs for site with Identifier '0123-45676-09876'.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Sites Planner Endpoint](https://docs.api.zerto.com/#/Planner/get_v2_planner_sites)
|
||||||
|
[Zerto Analytics Single Site Planner Endpoint](https://docs.api.zerto.com/#/Planner/get_v2_planner_sites__siteIdentifier_)
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerStatsReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerStatsReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Create a report request for the selected VMs for a specific timeframe, retrieving all stats data for ZCAs, WAN, Journal size and array of VMs avg IOPs, avg throughput and journal size.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerStatsReport [-siteIdentifier] <String> [-recoveryType] <String> [-vmIdentifier] <String[]>
|
||||||
|
[[-desiredJournalHistory] <Int32>] [[-startDate] <String>] [[-endDate] <String>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Create a report request for the selected VMs for a specific timeframe, retrieving all stats data for ZCAs, WAN, Journal size and array of VMs avg IOPs, avg throughput and journal size.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerStatsReport -siteIdentifier '0123-45676-09876' -recoveryType vcenter -vmIdentifier 'vmIdentifier01', 'vmIdentifier02'
|
||||||
|
```
|
||||||
|
|
||||||
|
Will get a stats report for the two VMs listed recovering to a vCenter site with a 24 hour journal
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerStatsReport -siteIdentifier '0123-45676-09876' -recoveryType Azure -vmIdentifier 'vmIdentifier01', 'vmIdentifier02' -desiredJournalHistory 72
|
||||||
|
```
|
||||||
|
|
||||||
|
Will get a stats report for the two VMs listed recovering to an Azure site with a 72 hour journal
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -desiredJournalHistory
|
||||||
|
The desired journal history in hours.
|
||||||
|
The default is 24 hours.
|
||||||
|
Limited to a 1 hour up to 720 hours, or the equivalent of 30 days
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: Int32
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: 24
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -endDate
|
||||||
|
The latest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is the current time.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 6
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -recoveryType
|
||||||
|
Type of target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -startDate
|
||||||
|
The earliest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is one year ago.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 5
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -vmIdentifier
|
||||||
|
Identifiers of the VMs you want to recover at the target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Planner Stats API Endpoint - POST](https://docs.api.zerto.com/#/Planner/post_v2_planner_reports_stats)
|
||||||
|
[Zerto Analytics Planner Stats API Endpoint - GET](https://docs.api.zerto.com/#/Planner/get_v2_planner_reports_stats)
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerWanReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerWanReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Create a report request to retrieve WAN for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerWanReport [-siteIdentifier] <String> [-recoveryType] <String> [-vmIdentifier] <String[]>
|
||||||
|
[[-startDate] <String>] [[-endDate] <String>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Create a report request to retrieve WAN for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerWanReport -siteIdentifier '12345-0987654-254364' -recoveryType vcenter -vmIdentifier '1234-98789-0987', '1234-98789-1252'
|
||||||
|
```
|
||||||
|
|
||||||
|
Get a WAN requirements report for VMs at the protected site.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -endDate
|
||||||
|
The latest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is the current time.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 5
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -recoveryType
|
||||||
|
Type of target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -startDate
|
||||||
|
The earliest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is one year ago.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -vmIdentifier
|
||||||
|
Identifiers of the VMs you want to recover at the target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Planner Wan Stats API Endpoint - POST](https://docs.api.zerto.com/#/Planner/post_v2_planner_reports_stats_wan)
|
||||||
|
[Zerto Analytics Planner Wan Stats API Endpoint - GET](https://docs.api.zerto.com/#/Planner/get_v2_planner_reports_stats_wan)
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAPlannerZcasReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAPlannerZcasReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Create a report request to retrieve ZCAs for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAPlannerZcasReport [-siteIdentifier] <String> [-recoveryType] <String> [-vmIdentifier] <String[]>
|
||||||
|
[[-startDate] <String>] [[-endDate] <String>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Create a report request to retrieve ZCAs for a specific VMs list, and timeframe.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAPlannerZcasReport -siteIdentifier '12345-0987654-254364' -recoveryType azure -vmIdentifier '1234-98789-0987', '1234-98789-1252'
|
||||||
|
```
|
||||||
|
|
||||||
|
Get a report for the number of required ZCA's in Azure to protect the supplied VMs.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -endDate
|
||||||
|
The latest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is the current time.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 5
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -recoveryType
|
||||||
|
Type of target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -siteIdentifier
|
||||||
|
The site identifier(s) for which to return detailed information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -startDate
|
||||||
|
The earliest timestamp of an event to return, in RFC 3339 standard.
|
||||||
|
('1970-01-01T00:00:00Z').
|
||||||
|
The default is one year ago.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -vmIdentifier
|
||||||
|
Identifiers of the VMs you want to recover at the target recovery site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Planner ZCA Stats API Endpoint - POST](https://docs.api.zerto.com/#/Planner/post_v2_planner_reports_stats_zcas)
|
||||||
|
[Zerto Analytics Planner ZCA Stats API Endpoint - GET](https://docs.api.zerto.com/#/Planner/get_v2_planner_reports_stats_zcas)
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAProtectedVm.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAProtectedVm
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Gets information about currently protected Virtual Machines in all sites. If desired a subset of VMs can be returned by providing VM Identifiers for each virtual machine.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
### AllVMs (Default)
|
||||||
|
```
|
||||||
|
Get-ZAProtectedVm [-AllVms] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
### IndividualVMs
|
||||||
|
```
|
||||||
|
Get-ZAProtectedVm -VMIdentifier <String[]> [-Volumes] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Gets information about currently protected Virtual Machines in all sites. If desired a subset of VMs can be returned by providing VM Identifiers for each virtual machine. Finally, when gathering information for individual virtual machines, the `-Volumes` parameter can be specified to return volume information for the protected VM.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAProtectedVm
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns all protected virtual machines across all sites.
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAProtectedVm -AllVMs
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns all protected virtual machines across all sites.
|
||||||
|
|
||||||
|
### Example 3
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAProtectedVm -VMIdentifier '09914-12345-12341235', '81238-12532-12355332'
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns information for only the two specified virtual machines
|
||||||
|
|
||||||
|
### Example 4
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAProtectedVm -VMIdentifier '09914-12345-12341235', '81238-12532-12355332' -Volumes
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns volume information for the two specified virtual machines
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -AllVms
|
||||||
|
Use this switch when you want a list of all protected VMs.
|
||||||
|
Please be warned this list can be quite large.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: AllVMs
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: False
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -VMIdentifier
|
||||||
|
A list of VM identifiers to query
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: IndividualVMs
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -Volumes
|
||||||
|
Specify this switch when you would like protected vms' volume information returned
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: IndividualVMs
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: False
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Protected VMs API Endpoint - AllVMs](https://docs.api.zerto.com/#/Monitoring/get_v2_monitoring_protected_vms)
|
||||||
|
[Zerto Analytics Protected VMs API Endpoint - List of VMs](https://docs.api.zerto.com/#/Monitoring/get_v2_monitoring_protected_vms__vmIdentifier_)
|
||||||
|
[Zerto Analytics Protected VMs API Endpoint - Volumes of VMs](https://docs.api.zerto.com/#/Monitoring/get_v2_monitoring_protected_vms__vmIdentifier__volumes)
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZAProtectedVmReport.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Get-ZAProtectedVmReport
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Creates a report of the requested protected virtual machines' volumes.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Get-ZAProtectedVmReport -VMIdentifier <String[]> [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Creates a report of the requested protected virtual machines' volumes.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZAProtectedVmReport -VMIdentifier '09914-12345-12341235', '81238-12532-12355332'
|
||||||
|
```
|
||||||
|
|
||||||
|
Generates a protected vm report for the virtual machines with the specified VMIdentifiers.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -VMIdentifier
|
||||||
|
A list of VM identifiers to include in the report.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String[]
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics Protected VMs Report API Endpoint - POST](https://docs.api.zerto.com/#/Monitoring/post_v2_monitoring_protected_vms)
|
||||||
|
[Zerto Analytics Protected VMs Report API Endpoint - GET](https://docs.api.zerto.com/#/Monitoring/get_v2_monitoring_protected_vms_reportId__reportId_)
|
||||||
@@ -20,7 +20,7 @@ Get-ZertoRecoveryReport [<CommonParameters>]
|
|||||||
### filter
|
### filter
|
||||||
```
|
```
|
||||||
Get-ZertoRecoveryReport [-startTime <String>] [-endTime <String>] [-pageNumber <String>] [-pageSize <String>]
|
Get-ZertoRecoveryReport [-startTime <String>] [-endTime <String>] [-pageNumber <String>] [-pageSize <String>]
|
||||||
[-vpgIdentifier <String>] [-vpgName <String>] [-recoveryType <String>] [-state <String>] [<CommonParameters>]
|
[-vpgName <String>] [-recoveryType <String>] [-state <String>] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
@@ -142,22 +142,6 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
### -vpgIdentifier
|
|
||||||
The internal identifier of the VPG.
|
|
||||||
You can specify more than one VPG, separated by commas.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: filter
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -vpgName
|
### -vpgName
|
||||||
The name of the VPG.
|
The name of the VPG.
|
||||||
You can specify more than one VPG, separated by commas.
|
You can specify more than one VPG, separated by commas.
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ Returns information about the hypervisor site where the API is run and all the s
|
|||||||
Get-ZertoVirtualizationSite [<CommonParameters>]
|
Get-ZertoVirtualizationSite [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### repositories
|
||||||
|
```
|
||||||
|
Get-ZertoVirtualizationSite -siteIdentifier <String> [-repositories] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
### folders
|
### folders
|
||||||
```
|
```
|
||||||
Get-ZertoVirtualizationSite -siteIdentifier <String> [-folders] [<CommonParameters>]
|
Get-ZertoVirtualizationSite -siteIdentifier <String> [-folders] [<CommonParameters>]
|
||||||
@@ -225,6 +230,21 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### -repositories
|
||||||
|
The identifier of the Zerto Virtual Manager site.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: repositories
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
### -resourcePools
|
### -resourcePools
|
||||||
Return all resource pools at the selected site.
|
Return all resource pools at the selected site.
|
||||||
|
|
||||||
@@ -245,7 +265,7 @@ The identifier of the Zerto Virtual Manager site.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String
|
Type: String
|
||||||
Parameter Sets: folders, devices, vms, resourcePools, networks, hosts, hostClusters, datastores, datastoreClusters, siteIdentifier
|
Parameter Sets: repositories, folders, devices, vms, resourcePools, networks, hosts, hostClusters, datastores, datastoreClusters, siteIdentifier
|
||||||
Aliases: siteId
|
Aliases: siteId
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
@@ -271,7 +291,7 @@ Accept wildcard characters: False
|
|||||||
```
|
```
|
||||||
|
|
||||||
### CommonParameters
|
### CommonParameters
|
||||||
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
## INPUTS
|
## INPUTS
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ Returns information when a VPG Settings object is created to create a new or edi
|
|||||||
Get-ZertoVpgSetting [<CommonParameters>]
|
Get-ZertoVpgSetting [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ltr
|
||||||
|
```
|
||||||
|
Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> [-ltr] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
### volumeIdentifier
|
### volumeIdentifier
|
||||||
```
|
```
|
||||||
Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> -vmIdentifier <String> -volumeIdentifier <String>
|
Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> -vmIdentifier <String> -volumeIdentifier <String>
|
||||||
@@ -56,7 +61,7 @@ Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> [-scripting] [<CommonParam
|
|||||||
|
|
||||||
### recovery
|
### recovery
|
||||||
```
|
```
|
||||||
Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> [-rcovery] [<CommonParameters>]
|
Get-ZertoVpgSetting -vpgSettingsIdentifier <String[]> [-recovery] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
### priority
|
### priority
|
||||||
@@ -151,10 +156,17 @@ PS C:\> Get-ZertoVpgSetting -vpgSettingsIdentifier "MySettingsIdentifier" -basic
|
|||||||
|
|
||||||
Returns current basic settings for vpgSettingsIdentifier "MySettingsIdentifier"
|
Returns current basic settings for vpgSettingsIdentifier "MySettingsIdentifier"
|
||||||
|
|
||||||
|
### Example 6
|
||||||
|
```powershell
|
||||||
|
PS C:\> Get-ZertoVpgSetting -vpgSettingsIdentifier "MySettingsIdentifier" -ltr
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns current LTR settings for vpgSettingsIdentifier "MySettingsIdentifier"
|
||||||
|
|
||||||
## PARAMETERS
|
## PARAMETERS
|
||||||
|
|
||||||
### -backup
|
### -backup
|
||||||
Return backup information for VPG identifier specified
|
Return backup information for VPG identifier specified. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
@@ -199,7 +211,7 @@ Accept wildcard characters: False
|
|||||||
```
|
```
|
||||||
|
|
||||||
### -dayOfWeek
|
### -dayOfWeek
|
||||||
Get the day of week a backup is scheduled
|
Get the day of week a backup is scheduled. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
@@ -228,6 +240,21 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### -ltr
|
||||||
|
Return LTR information for the specified VPG. Please note, this parameter is ONLY available in Zerto version 8.0 and later. Attempting to run this switch against a Zerto Virtual Manager version 7.5 or lower will result in an error.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: ltr
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
### -networks
|
### -networks
|
||||||
Get VPG Network Settings
|
Get VPG Network Settings
|
||||||
|
|
||||||
@@ -288,13 +315,13 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
### -rcovery
|
### -recovery
|
||||||
Get VPG Recovery Settings
|
Get VPG Recovery Settings
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
Parameter Sets: recovery
|
Parameter Sets: recovery
|
||||||
Aliases:
|
Aliases: rcovery
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
Position: Named
|
Position: Named
|
||||||
@@ -304,7 +331,7 @@ Accept wildcard characters: False
|
|||||||
```
|
```
|
||||||
|
|
||||||
### -retentionPeriod
|
### -retentionPeriod
|
||||||
Get the retention period for a backup
|
Get the retention period for a backup. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
@@ -319,7 +346,7 @@ Accept wildcard characters: False
|
|||||||
```
|
```
|
||||||
|
|
||||||
### -schedulerPeriod
|
### -schedulerPeriod
|
||||||
Get the backup schedule
|
Get the backup schedule. Please note, this parameter is ONLY available in Zerto version 7.5 and earlier. Attempting to run this switch against a Zerto Virtual Manager version 8.0 or higher result in an error.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
@@ -413,7 +440,7 @@ The identifier of the VPG settings object for which information is retrieved.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String[]
|
Type: String[]
|
||||||
Parameter Sets: volumeIdentifier, volumes, nicIdentifier, nics, vmIdentifier, vms, scripting, recovery, priority, networks, journal, bootGroup, basic, schedulerPeriod, retentionPeriod, dayOfWeek, backup, vpgSettingsIdentifier
|
Parameter Sets: ltr, volumeIdentifier, volumes, nicIdentifier, nics, vmIdentifier, vms, scripting, recovery, priority, networks, journal, bootGroup, basic, schedulerPeriod, retentionPeriod, dayOfWeek, backup, vpgSettingsIdentifier
|
||||||
Aliases: vpgSettingsId, settingsId
|
Aliases: vpgSettingsId, settingsId
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
@@ -424,7 +451,7 @@ Accept wildcard characters: False
|
|||||||
```
|
```
|
||||||
|
|
||||||
### CommonParameters
|
### CommonParameters
|
||||||
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
## INPUTS
|
## INPUTS
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
external help file: ZertoApiWrapper-help.xml
|
external help file: ZertoApiWrapper-help.xml
|
||||||
Module Name: ZertoApiWrapper
|
Module Name: ZertoApiWrapper
|
||||||
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZertoZsspSession.md
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Import-ZertoVmNicSetting.md
|
||||||
schema: 2.0.0
|
schema: 2.0.0
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -19,7 +19,12 @@ Import-ZertoVmNicSetting [-InputFile] <String> [-WhatIf] [-Confirm] [<CommonPara
|
|||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
Using a CSV file, will import updated Live and Test network settings for protected virtual machines. This function will read the provided CSV file and only update VMs defined in the file.
|
Using a CSV file, will import updated Live and Test network settings for protected virtual machines. This function will read the provided CSV file and only update VMs defined in the file.
|
||||||
|
|
||||||
It should be noted, due to current API limitations once a NIC is defined to update to either a Static IP address or use a DHCP address, it is not possible to remove that configuration via the API. Should you require this functionality, you will need to manually update via the GUI to set the option to "No"
|
Each entry in the CSV will be for one VM and a single NIC attached to that VM. Each entry MUST contain the following information: VPG Name, VM Name, Network Adapter Name, Mac Address Update for both Live and Test, and Network Name for both Live and Test. All other information is optional, but will be applied based on the following logic:
|
||||||
|
* If 'IsDhcp' is set to 'TRUE', the NIC setting will be set to DHCP and Primary DNS, Secondary DNS, and Search Domain settings will be applied along with the mandatory fields.
|
||||||
|
* If 'IsDhcp' is set to 'FALSE' or not set and there is an IP Address defined, the IP Address, Subnet Mask, Default Gateway, Primary DNS, Secondary DNS, and Search Domain settings will be applied along with the mandatory fields.
|
||||||
|
* if 'IsDhcp' is set to 'FALSE' or not set and there is NOT an IP Address defined, the current NIC settings will be removed and ONLY the mandatory fields will be applied.
|
||||||
|
|
||||||
|
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
|
## EXAMPLES
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,26 @@ Install Zerto VRA to a single host in the site with either a Static IP address,
|
|||||||
|
|
||||||
## SYNTAX
|
## SYNTAX
|
||||||
|
|
||||||
|
### DhcpWithRoot
|
||||||
|
```
|
||||||
|
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
||||||
|
[-groupName <String>] [-Dhcp] [-UseRootCredential] -HostRootPassword <SecureString> [-WhatIf] [-Confirm]
|
||||||
|
[<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
### Dhcp
|
### Dhcp
|
||||||
```
|
```
|
||||||
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
||||||
[-groupName <String>] [-Dhcp] [-WhatIf] [-Confirm] [<CommonParameters>]
|
[-groupName <String>] [-Dhcp] [-WhatIf] [-Confirm] [<CommonParameters>]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### StaticIpWithRoot
|
||||||
|
```
|
||||||
|
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
||||||
|
[-groupName <String>] -vraIpAddress <String> -defaultGateway <String> -subnetMask <String>
|
||||||
|
[-UseRootCredential] -HostRootPassword <SecureString> [-WhatIf] [-Confirm] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
### StaticIp
|
### StaticIp
|
||||||
```
|
```
|
||||||
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
Install-ZertoVra -hostName <String> -datastoreName <String> -networkName <String> [-memoryInGB <Int32>]
|
||||||
@@ -44,6 +58,20 @@ PS C:\> Install-ZertoVra -hostName "Host01" -datastoreName "Datastore01" -networ
|
|||||||
|
|
||||||
Installs a VRA on the Host "Host01" using datastore "Datastore01" on network "VM Network" assigning a DHCP address.
|
Installs a VRA on the Host "Host01" using datastore "Datastore01" on network "VM Network" assigning a DHCP address.
|
||||||
|
|
||||||
|
### Example 3
|
||||||
|
```powershell
|
||||||
|
PS C:\> Install-ZertoVra -hostName "Host01" -datastoreName "Datastore01" -networkName "VM Network" -vraIpAddress "192.168.1.50" -defaultGateway "192.168.1.254" -subnetMask "255.255.255.0" -UseRootCredential -HostRootPassword $RootPasswordAsSecureString
|
||||||
|
```
|
||||||
|
|
||||||
|
Installs a VRA on the Host "Host01" using datastore "Datastore01" on network "VM Network" assigning an IP address if "192.168.1.50", subnetmask of "255.255.255.0" and default gateway of "192.168.1.254" using the Root Credential install method.
|
||||||
|
|
||||||
|
### Example 4
|
||||||
|
```powershell
|
||||||
|
PS C:\> Install-ZertoVra -hostName "Host01" -datastoreName "Datastore01" -networkName "VM Network" -dhcp -UseRootCredential -HostRootPassword $RootPasswordAsSecureString
|
||||||
|
```
|
||||||
|
|
||||||
|
Installs a VRA on the Host "Host01" using datastore "Datastore01" on network "VM Network" assigning a DHCP address using the Root Credential install method.
|
||||||
|
|
||||||
## PARAMETERS
|
## PARAMETERS
|
||||||
|
|
||||||
### -datastoreName
|
### -datastoreName
|
||||||
@@ -66,7 +94,7 @@ Default gateway to assign to the VRA
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String
|
Type: String
|
||||||
Parameter Sets: StaticIp
|
Parameter Sets: StaticIpWithRoot, StaticIp
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
@@ -81,7 +109,7 @@ Assign a DHCP address to the VRA.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: SwitchParameter
|
Type: SwitchParameter
|
||||||
Parameter Sets: Dhcp
|
Parameter Sets: DhcpWithRoot, Dhcp
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
@@ -122,6 +150,21 @@ Accept pipeline input: False
|
|||||||
Accept wildcard characters: False
|
Accept wildcard characters: False
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### -HostRootPassword
|
||||||
|
The password for the root user of the ESXi host where the VRA is to be installed.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SecureString
|
||||||
|
Parameter Sets: DhcpWithRoot, StaticIpWithRoot
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
### -memoryInGB
|
### -memoryInGB
|
||||||
Initial amount of memory to assign to the VRA in GB.
|
Initial amount of memory to assign to the VRA in GB.
|
||||||
Default is 3, Minimum is 1, Maximum is 16
|
Default is 3, Minimum is 1, Maximum is 16
|
||||||
@@ -158,7 +201,22 @@ Subnetmask to be assigned to the VRA
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String
|
Type: String
|
||||||
Parameter Sets: StaticIp
|
Parameter Sets: StaticIpWithRoot, StaticIp
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -UseRootCredential
|
||||||
|
Use this switch to install the VRA using the root password install method.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: DhcpWithRoot, StaticIpWithRoot
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
@@ -173,7 +231,7 @@ Static IP address to assign to the VRA.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
Type: String
|
Type: String
|
||||||
Parameter Sets: StaticIp
|
Parameter Sets: StaticIpWithRoot, StaticIp
|
||||||
Aliases:
|
Aliases:
|
||||||
|
|
||||||
Required: True
|
Required: True
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Invoke-ZARestRequest.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Invoke-ZARestRequest
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Function used to submit a REST request to the Zerto Analytics Portal. Should be used when attempting to submit a request inside a ZertoApiWrapper function or if attempting to perform an operation not currently covered in a ZertoApiWrapper function.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Invoke-ZARestRequest [-uri] <String> [[-method] <String>] [[-body] <String>] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Function used to submit a REST request to the Zerto Analytics Portal. Should be used when attempting to submit a request inside a ZertoApiWrapper function or if attempting to perform an operation not currently covered in a ZertoApiWrapper function. To function properly, you will have to have completed a connection to a Zerto Virtual Manager with the `Connect-ZertoAnalytics` function.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method GET
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a GET request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint'. Check the API documentation for the endpoint to ensure the URI is formatted correctly. Typically a GET request does not require a BODY parameter.
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method POST -Body $Body
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a PUT request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint' with a Body parameter. Check the API documentation for the endpoint to ensure the URI is formatted correctly and the format of the Body variable. The command above assumes that the $Body variable is an object that can be formatted into JSON.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -body
|
||||||
|
Body to be submitted to the REST API endpoint.
|
||||||
|
This needs to be submitted in JSON format
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -method
|
||||||
|
API method to be used.
|
||||||
|
GET, PUT, POST, or DELETE.
|
||||||
|
Refer to documentation for the API endpoint to ensure the correct method is being used.
|
||||||
|
If unspecified, defaults to GET
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 2
|
||||||
|
Default value: GET
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -uri
|
||||||
|
Parameter help description
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Analytics API Endpoint Documentation](https://docs.api.zerto.com/)
|
||||||
@@ -0,0 +1,154 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Invoke-ZertoRestRequest.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Invoke-ZertoRestRequest
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Function used to submit a REST request to the Zerto Virtual Manager. Should be used when attempting to submit a request inside a ZertoApiWrapper function or if attempting to perform an operation not currently covered in a ZertoApiWrapper function.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Invoke-ZertoRestRequest [[-method] <String>] [-uri] <String> [[-body] <String>] [[-credential] <PSCredential>]
|
||||||
|
[-returnHeaders] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Function used to submit a REST request to the Zerto Virtual Manager. Should be used when attempting to submit a request inside a ZertoApiWrapper function or if attempting to perform an operation not currently covered in a ZertoApiWrapper function. To function properly, you will have to have completed a connection to a Zerto Virtual Manager with the `Connect-ZertoServer` function.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method POST -Body $Body
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a POST request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint' with a Body parameter. Check the API documentation for the endpoint to ensure the URI is formatted correctly and the format of the Body variable. The command above assumes that the $Body variable is a string properly formatted for JSON
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method POST -Body ($Body | ConvertTo-Json)
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a POST request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint' with a Body parameter. Check the API documentation for the endpoint to ensure the URI is formatted correctly and the format of the Body variable. The command above assumes that the $Body variable is an object that can be formatted into JSON.
|
||||||
|
|
||||||
|
### Example 3
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method PUT -Body $Body
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a PUT request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint' with a Body parameter. Check the API documentation for the endpoint to ensure the URI is formatted correctly and the format of the Body variable. The command above assumes that the $Body variable is a string properly formatted for JSON
|
||||||
|
|
||||||
|
### Example 4
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method DELETE
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a DELETE request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint'. Check the API documentation for the endpoint to ensure the URI is formatted correctly. Typically a DELETE request does not require a BODY parameter.
|
||||||
|
|
||||||
|
### Example 5
|
||||||
|
```powershell
|
||||||
|
PS C:\> Invoke-ZertoRestRequest -uri 'apiEndpoint/subApiEndpoint' -Method GET
|
||||||
|
```
|
||||||
|
|
||||||
|
Submits a GET request to the connected Zerto Virtual Manager api endpoint 'apiEndpoint/subApiEndpoint'. Check the API documentation for the endpoint to ensure the URI is formatted correctly. Typically a GET request does not require a BODY parameter.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -body
|
||||||
|
Body to be submitted to the REST API endpoint.
|
||||||
|
This needs to be submitted in JSON format
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 3
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -credential
|
||||||
|
PSCredential object.
|
||||||
|
This is ONLY used when authenticating with the ZVM.
|
||||||
|
No other endpoints require this and generally is not used.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: PSCredential
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 4
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -method
|
||||||
|
Parameter help description
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: 1
|
||||||
|
Default value: GET
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -returnHeaders
|
||||||
|
Use this switch if you would like the request headers returned along with the body.
|
||||||
|
Useful for troubleshooting to get HTTP error codes.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: False
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -uri
|
||||||
|
URI endpoint to be utilized.
|
||||||
|
When submitting the URI, only the endpoint needs to be submitted.
|
||||||
|
Please review the help documentation for examples.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: String
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 2
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
|
||||||
|
[Zerto Virtual Replication API Endpoint Documentation](https://s3.amazonaws.com/zertodownload_docs/Latest/Zerto%20Virtual%20Replication%20Zerto%20Virtual%20Manager%20(ZVM)%20-%20vSphere%20Online%20Help/content/intro/book_in_portal_-_zvr_restful_apis.htm)
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
---
|
||||||
|
external help file: ZertoApiWrapper-help.xml
|
||||||
|
Module Name: ZertoApiWrapper
|
||||||
|
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Set-ZertoUserCredential.md
|
||||||
|
schema: 2.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Set-ZertoUserCredential
|
||||||
|
|
||||||
|
## SYNOPSIS
|
||||||
|
Allows the change or update of the credentials used to allow the Zerto Virtual Manager to connect and communicate with the paired Hypervisor.
|
||||||
|
|
||||||
|
## SYNTAX
|
||||||
|
|
||||||
|
```
|
||||||
|
Set-ZertoUserCredential [-UserCredential] <PSCredential> [-WhatIf] [-Confirm] [<CommonParameters>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## DESCRIPTION
|
||||||
|
Allows the change or update of the credentials used to allow the Zerto Virtual Manager to connect and communicate with the paired Hypervisor. A PSCredential object is required and will be used to pass the updated credentials.
|
||||||
|
|
||||||
|
## EXAMPLES
|
||||||
|
|
||||||
|
### Example 1
|
||||||
|
```powershell
|
||||||
|
PS C:\> Set-ZertoUserCredential -UserCredential $UserCredential
|
||||||
|
```
|
||||||
|
|
||||||
|
Will update the user account used to connect the Zerto Virtual Manager to the the paired Hypervisor.
|
||||||
|
|
||||||
|
### Example 2
|
||||||
|
```powershell
|
||||||
|
PS C:\> Set-ZertoUserCredential -UserCredential $UserCredential -Confirm:$False
|
||||||
|
```
|
||||||
|
|
||||||
|
Will update the user account used to connect the Zerto Virtual Manager to the the paired Hypervisor. CAUTION: By adding the `-Confirm:$False` parameter, this will suppress the confirmation dialog and you will not be prompted if you wish to complete this action.
|
||||||
|
|
||||||
|
## PARAMETERS
|
||||||
|
|
||||||
|
### -UserCredential
|
||||||
|
PSCredential Object that contains the username and password for the updated credentials.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: PSCredential
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases:
|
||||||
|
|
||||||
|
Required: True
|
||||||
|
Position: 1
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -Confirm
|
||||||
|
Prompts you for confirmation before running the cmdlet.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases: cf
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### -WhatIf
|
||||||
|
Shows what would happen if the cmdlet runs.
|
||||||
|
The cmdlet is not run.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Type: SwitchParameter
|
||||||
|
Parameter Sets: (All)
|
||||||
|
Aliases: wi
|
||||||
|
|
||||||
|
Required: False
|
||||||
|
Position: Named
|
||||||
|
Default value: None
|
||||||
|
Accept pipeline input: False
|
||||||
|
Accept wildcard characters: False
|
||||||
|
```
|
||||||
|
|
||||||
|
### CommonParameters
|
||||||
|
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable.
|
||||||
|
For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
|
||||||
|
|
||||||
|
## INPUTS
|
||||||
|
|
||||||
|
## OUTPUTS
|
||||||
|
|
||||||
|
## NOTES
|
||||||
|
|
||||||
|
## RELATED LINKS
|
||||||
|
[PSCredential Object Information](https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.pscredential)
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.3.0
|
1.4.0
|
||||||
|
|||||||
Reference in New Issue
Block a user