Initial Commit to Dedicated Repo

This commit is contained in:
Wes Carroll
2019-02-19 15:53:30 -05:00
parent e9773caa10
commit ae28fddec2
48 changed files with 5188 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
function Connect-ZertoServer {
[cmdletbinding(
SupportsShouldProcess = $false
)]
param(
[Parameter(
Mandatory = $true,
HelpMessage = "IP address or FQDN of your Zerto Management Server"
)]
[ValidateNotNullOrEmpty()]
[string]$zertoServer,
[string]$zertoPort = "9669",
[Parameter(
Mandatory = $true,
HelpMessage = "Valid credentials to connect to the Zerto Management Server"
)]
[System.Management.Automation.PSCredential]
$credential
)
$zertoConnectionInformation = @{"zertoServer" = $zertoServer; "zertoPort" = $zertoPort; "LastAction" = $(get-date).Ticks}
Set-Item Env:zertoConnectionInformation -Value ($zertoConnectionInformation | convertto-json -Compress)
$body = '{"AuthenticationMethod": "1"}'
$uri = "session/add"
$results = Invoke-ZertoRestRequest -uri $uri -credential $credential -returnHeaders -body $body -method POST
$zertoAuthorizationHeaders = @{"x-zerto-session" = $results.Headers['x-zerto-session'][0].ToString(); "Accept" = "application/json"}
Set-Item Env:zertoAuthorizationHeaders -Value ($zertoAuthorizationHeaders | convertto-json -Compress)
return $zertoAuthorizationHeaders
}
+7
View File
@@ -0,0 +1,7 @@
function Disconnect-ZertoServer {
[cmdletbinding()]
$uri = "session"
Invoke-ZertoRestRequest -uri $uri -method DELETE
Remove-Item Env:zertoAuthorizationHeaders
Remove-Item Env:zertoConnectionInformation
}
+71
View File
@@ -0,0 +1,71 @@
function Get-ZertoAlert {
[cmdletbinding( defaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "alertId", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )]
[string[]]$alertId,
[Parameter( ParameterSetName = "entities", Mandatory = $true )]
[switch]$entities,
[Parameter( ParameterSetName = "helpIdentifiers", Mandatory = $true )]
[switch]$helpIdentifiers,
[Parameter( ParameterSetName = "levels", Mandatory = $true )]
[switch]$levels,
[Parameter( ParameterSetName = "filter" )]
[string]$startDate,
[Parameter( ParameterSetName = "filter" )]
[string]$endDate,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$siteIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$zorgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$level,
[Parameter( ParameterSetName = "filter" )]
[string]$helpIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$entity,
[Parameter( ParameterSetName = "filter" )]
[switch]$isDismissed
)
begin {
$baseUri = "alerts"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$uri = "{0}" -f $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
"alertId" {
foreach ( $id in $alertId ) {
$uri = "{0}/{1}" -f $baseUri, $alertId
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
default {
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+30
View File
@@ -0,0 +1,30 @@
function Get-ZertoDatastore {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "datastoreIdentifier" )]
[string[]]$datastoreIdentifier
)
begin {
$baseUri = "datastores"
$returnObject = [System.Collections.ArrayList]@()
}
process {
if ( $PSCmdlet.ParameterSetName -eq "main" ) {
$uri = "{0}" -f $baseUri
$result = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($result) | Out-Null
} else {
foreach ( $id in $datastoreIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$result = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($result) | Out-Null
}
}
}
end {
return $returnObject
}
}
+79
View File
@@ -0,0 +1,79 @@
function Get-ZertoEvent {
[cmdletbinding( defaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "filter" )]
[string]$startDate,
[Parameter( ParameterSetName = "filter" )]
[string]$endDate,
[Parameter( ParameterSetName = "filter" )]
[string]$vpg,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$eventType,
[Parameter( ParameterSetName = "filter" )]
[string]$siteName,
[Parameter( ParameterSetName = "filter" )]
[string]$siteIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$zorgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$entityType,
[Parameter( ParameterSetName = "filter" )]
[string]$userName,
[Parameter( ParameterSetName = "filter" )]
[string]$category,
[Parameter( ParameterSetName = "filter" )]
[string]$eventCategory,
[Parameter( ParameterSetName = "filter" )]
[string]$alertIdentifier,
[Parameter( ParameterSetName = "eventId", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )]
[string[]]$eventId,
[Parameter( ParameterSetName = "categories", Mandatory = $true )]
[switch]$categories,
[Parameter( ParameterSetName = "entities", Mandatory = $true )]
[switch]$entities,
[Parameter( ParameterSetName = "types", Mandatory = $true )]
[switch]$types
)
begin {
$baseUri = "events"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$uri = "{0}" -f $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
"eventId" {
foreach ( $id in $eventId ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
default {
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+5
View File
@@ -0,0 +1,5 @@
function Get-ZertoLicense {
[cmdletbinding()]
$uri = "license"
Invoke-ZertoRestRequest -uri $uri
}
+11
View File
@@ -0,0 +1,11 @@
function Get-ZertoLocalSite {
[cmdletbinding()]
param(
[switch]$pairingstatuses
)
$uri = "localsite"
if ($pairingstatuses) {
$uri = "/{0}/pairingstatuses" -f $uri
}
Invoke-ZertoRestRequest -uri $uri
}
+62
View File
@@ -0,0 +1,62 @@
function Get-ZertoPeerSite {
[cmdletbinding( defaultParameterSetName = "main" )]
param (
[Parameter ( ParameterSetName = "pairingStatuses", Mandatory = $true )]
[switch]$pairingStatuses,
[Parameter ( ParameterSetName = "siteIdentifier",
Mandatory = $true,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true )]
[string[]]$siteIdentifier,
[Parameter ( ParameterSetName = "filter" )]
[string]$peerName,
[Parameter ( ParameterSetName = "filter" )]
[string]$paringStatus,
[Parameter ( ParameterSetName = "filter" )]
[string]$location,
[Parameter ( ParameterSetName = "filter" )]
[string]$hostName,
[Parameter ( ParameterSetName = "filter" )]
[string]$port
)
begin {
$baseUri = "peersites"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$uri = "{0}" -f $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
"siteIdentifier" {
foreach ( $id in $siteIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
default {
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+60
View File
@@ -0,0 +1,60 @@
function Get-ZertoProtectedVm {
[cmdletbinding( DefaultParameterSetName = "main" )]
param (
[Parameter( ParameterSetName = "vmIdentifier", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )]
[string[]]$vmIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgName,
[Parameter( ParameterSetName = "filter" )]
[string]$vmName,
[Parameter( ParameterSetName = "filter" )]
[string]$status,
[Parameter( ParameterSetName = "filter" )]
[string]$substatus,
[Parameter( ParameterSetName = "filter" )]
[string]$organizationName,
[Parameter( ParameterSetName = "filter" )]
[string]$priority,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedSiteType,
[Parameter( ParameterSetName = "filter" )]
[string]$recoverySiteType,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedSiteIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$recoverySiteIdentifier
)
begin {
$baseUri = "vms"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results) | Out-Null
}
"vmIdentifier" {
foreach ( $id in $vmIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = New-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+43
View File
@@ -0,0 +1,43 @@
function Get-ZertoRecoveryReport {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "filter" )]
[string]$startTime,
[Parameter( ParameterSetName = "filter" )]
[string]$endTime,
[Parameter( ParameterSetName = "filter" )]
[string]$pageNumber,
[Parameter( ParameterSetName = "filter" )]
[string]$pageSize,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgName,
[Parameter( ParameterSetName = "filter" )]
[string]$recoveryType,
[Parameter( ParameterSetName = "filter" )]
[string]$state
)
begin {
$baseUri = "reports/recovery"
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = New-ZertoRestRequest -uri $uri
}
default {
$results = Invoke-ZertoRestRequest -uri $baseUri
}
}
}
end {
return $results
}
}
+61
View File
@@ -0,0 +1,61 @@
function Get-ZertoResourcesReport {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "filter" )]
[string]$startTime,
[Parameter( ParameterSetName = "filter" )]
[string]$endTime,
[Parameter( ParameterSetName = "filter" )]
[string]$pageNumber,
[Parameter( ParameterSetName = "filter" )]
[string]$pageSize,
[Parameter( ParameterSetName = "filter" )]
[string]$zorgName,
[Parameter( ParameterSetName = "filter" )]
[string]$vmName,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgName,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedSiteName,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedClusterName,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedHostName,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedOrgVdc,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedVdcOrg,
[Parameter( ParameterSetName = "filter" )]
[string]$recoverySiteName,
[Parameter( ParameterSetName = "filter" )]
[string]$recoveryClusterName,
[Parameter( ParameterSetName = "filter" )]
[string]$recoveryHostName,
[Parameter( ParameterSetName = "filter" )]
[string]$recoveryOrgVdc,
[Parameter( ParameterSetName = "filter" )]
[string]$recoveryVdcOrg
)
begin {
$baseUri = "reports/resources"
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = New-ZertoRestRequest -uri $uri
}
default {
$results = Invoke-ZertoRestRequest -uri $baseUri
}
}
}
end {
return $results
}
}
+41
View File
@@ -0,0 +1,41 @@
function Get-ZertoServiceProfile {
[cmdletbinding( DefaultParameterSetName = "main" )]
param (
[Parameter( ParameterSetName = "siteIdentifier" )]
[string]$siteIdentifier,
[Parameter( ParameterSetName = "serviceProfileId" )]
[string[]]$serviceProfileId
)
begin {
$baseUri = "serviceprofiles"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"siteIdentifier" {
$uri = "{0}?site={1}" -f $baseUri, $siteIdentifier
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
"serviceProfileId" {
foreach ( $id in $serviceProfileId ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
default {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+60
View File
@@ -0,0 +1,60 @@
function Get-ZertoTask {
[cmdletbinding( DefaultParameterSetName = "main" )]
param (
[Parameter( ParameterSetName = "taskIdentifier" )]
[string[]]$taskIdentifier,
[Parameter( ParameterSetName = "types" )]
[switch]$types,
[Parameter ( ParameterSetName = "filter" )]
[string]$startedBeforeDate,
[Parameter ( ParameterSetName = "filter" )]
[string]$startedAfterDate,
[Parameter ( ParameterSetName = "filter" )]
[string]$completedAfterDate,
[Parameter ( ParameterSetName = "filter" )]
[string]$completedBeforeDate,
[Parameter ( ParameterSetName = "filter" )]
[string]$type,
[Parameter ( ParameterSetName = "filter" )]
[string]$status
)
begin {
$baseUri = "tasks"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results) | Out-Null
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = New-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
"taskIdentifier" {
foreach ( $id in $taskIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
default {
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results) | Out-Null
}
}
}
end {
return $returnObject
}
}
+5
View File
@@ -0,0 +1,5 @@
function Get-ZertoUnprotectedVm {
[cmdletbinding()]
$uri = "virtualizationsites/{0}/vms" -f $(Get-ZertoLocalSite).siteidentifier
Invoke-ZertoRestRequest -uri $uri
}
+94
View File
@@ -0,0 +1,94 @@
function Get-ZertoVirtualizationSite {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "siteIdentifier", Mandatory = $true )]
[Parameter( ParameterSetName = "datastoreClusters", Mandatory = $true )]
[Parameter( ParameterSetName = "datastores", Mandatory = $true )]
[Parameter( ParameterSetName = "hostClusters", Mandatory = $true )]
[Parameter( ParameterSetName = "hosts", Mandatory = $true )]
[Parameter( ParameterSetName = "networks", Mandatory = $true )]
[Parameter( ParameterSetName = "resourcePools", Mandatory = $true )]
[Parameter( ParameterSetName = "vms", Mandatory = $true )]
[string[]]$siteIdentifiers,
[Parameter( ParameterSetName = "devices", Mandatory = $true )]
[Parameter( ParameterSetName = "folders", Mandatory = $true )]
[string]$siteIdentifier,
[Parameter( ParameterSetName = "datastoreClusters", Mandatory = $true )]
[switch]$datastoreClusters,
[Parameter( ParameterSetName = "datastores", Mandatory = $true )]
[switch]$datastores,
[Parameter( ParameterSetName = "devices", Mandatory = $true )]
[switch]$devices,
[Parameter( ParameterSetName = "devices", Mandatory = $false )]
[Parameter( ParameterSetName = "hosts", Mandatory = $false )]
[string]$hostIdentifier,
[Parameter( ParameterSetName = "folders", Mandatory = $true )]
[switch]$folders,
[Parameter( ParameterSetName = "hostClusters", Mandatory = $true )]
[switch]$hostClusters,
[Parameter( ParameterSetName = "hosts", Mandatory = $true )]
[switch]$hosts,
[Parameter( ParameterSetName = "networks", Mandatory = $true )]
[switch]$networks,
[Parameter( ParameterSetName = "resourcePools", Mandatory = $true )]
[switch]$resourcePools,
[Parameter( ParameterSetName = "vms", Mandatory = $true )]
[switch]$vms
)
begin {
$baseUri = "virtualizationsites"
$returnObject = [System.Collections.ArrayList]@()
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results) | Out-Null
}
"devices" {
foreach ( $id in $siteIdentifier ) {
if ( $PSBoundParameters.Contains( "hostIdentifier" ) ) {
$uri = "{0}/{1}/devices?hostIdentifier={2}" -f $baseUri, $siteIdentifier, $hostIdentifier
} else {
$uri = "{0}/{1}/devices" -f $baseUri, $siteIdentifier
}
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
"hosts" {
if ( $PSBoundParameters.Contains( "hostIdentifier" ) ) {
$uri = "{0}/{1}/hosts/{2}" -f $baseUri, $siteIdentifier, $hostIdentifier
} else {
$uri = "{0}/{1}/hosts" -f $baseUri, $siteIdentifier
}
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
"siteIdentifier" {
foreach ( $id in $siteIdentifiers ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
default {
foreach ( $id in $siteIdentifiers ) {
$uri = "{0}/{1}/{2}" -f $baseUri, $siteIdentifier, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
}
}
end {
return $returnObject
}
}
+37
View File
@@ -0,0 +1,37 @@
function Get-ZertoVolume {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "filter" )]
[string]$volumeType,
[Parameter( ParameterSetName = "filter" )]
[string]$vpgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$datastoreIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedVmIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$owningVmIdentifier
)
begin {
$baseUri = "volumes"
}
process {
switch ( $PSCmdlet.ParameterSetName ) {
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = Invoke-ZertoRestRequest -uri $uri
}
default {
$results = Invoke-ZertoRestRequest -uri $baseUri
}
}
}
end {
return $results
}
}
+124
View File
@@ -0,0 +1,124 @@
function Get-ZertoVpg {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter( ParameterSetName = "protectionGroupIdentifier", Mandatory = $true )]
[Parameter( ParameterSetName = "checkpoints", Mandatory = $true )]
[Parameter( ParameterSetName = "stats", Mandatory = $true )]
[string[]]$protectionGroupIdentifier,
[Parameter( ParameterSetName = "checkpoints", Mandatory = $true )]
[switch]$checkpoints,
[Parameter ( ParameterSetName = "checkpoints")]
[string]$startDate,
[Parameter ( ParameterSetName = "checkpoints")]
[string]$endDate,
[Parameter( ParameterSetName = "stats", Mandatory = $true )]
[switch]$checkpointsStats,
[Parameter( ParameterSetName = "entityTypes", Mandatory = $true )]
[switch]$entityTypes,
[Parameter( ParameterSetName = "failoverCommitPolicies", Mandatory = $true )]
[switch]$failoverCommitPolicies,
[Parameter( ParameterSetName = "failoverShutdownPolicies", Mandatory = $true )]
[switch]$failoverShutdownPolicies,
[Parameter( ParameterSetName = "priorities", Mandatory = $true )]
[switch]$priorities,
[Parameter( ParameterSetName = "retentionPolicies", Mandatory = $true )]
[switch]$retentionPolicies,
[Parameter( ParameterSetName = "statuses", Mandatory = $true )]
[switch]$statuses,
[Parameter( ParameterSetName = "subStatuses", Mandatory = $true )]
[switch]$subStatuses,
[Parameter( ParameterSetName = "filter" )]
[string]$name,
[Parameter( ParameterSetName = "filter" )]
[string]$status,
[Parameter( ParameterSetName = "filter" )]
[string]$subStatus,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedSiteType,
[Parameter( ParameterSetName = "filter" )]
[string]$recoverySiteType,
[Parameter( ParameterSetName = "filter" )]
[string]$protectedSiteIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$recoverySiteIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$organizationName,
[Parameter( ParameterSetName = "filter" )]
[string]$zorgIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$priority,
[Parameter( ParameterSetName = "filter" )]
[string]$serviceProfileIdentifier,
[Parameter( ParameterSetName = "filter" )]
[string]$backupEnabled
)
begin {
$baseUri = "vpgs"
$returnObject = [System.Collections.ArrayList]@()
}
Process {
switch ( $PSCmdlet.ParameterSetName ) {
"main" {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results) | Out-Null
}
"protectionGroupIdentifier" {
foreach ( $vpgId in $protectionGroupIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $vpgId
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
"checkpoints" {
$filter = $false
if ( $PSBoundParameters.Contains("startDate") -or $PSBoundParameters.Contains("endDate") ) {
$filter = $true
$filterTable = @{}
foreach ( $key in $PSBoundParameters.Keys ) {
if ( $key -eq "startDate" -or $key -eq "endDate") {
$filterTable[$key] = $PSBoundParameters[$key]
}
}
$filter = New-ZertoApiFilter -filterTable $filterTable
}
foreach ( $id in $protectionGroupIdentifier ) {
if ( $filter ) {
$uri = "{0}/{1}/checkpoints{2}" -f $baseUri, $id, $filter
} else {
$uri = "{0}/{1}/checkpoints" -f $baseUri, $id
}
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
"stats" {
foreach ( $id in $protectionGroupIdentifier ) {
$uri = "{0}/{1}/checkpoints/stats" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
"filter" {
$filter = New-ZertoApiFilter -filterTable $PSBoundParameters
$uri = "{0}{1}" -f $baseUri, $filter
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
default {
$uri = "{0}/{1}" -f $baseUri, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
}
End {
return $returnObject
}
}
+257
View File
@@ -0,0 +1,257 @@
function Get-ZertoVpgSetting {
[cmdletbinding(
DefaultParameterSetName = "default",
SupportsShouldProcess = $false
)]
param(
[Parameter(
ParameterSetName = "vpgSettingsIdentifier",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "backup",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "dayOfWeek",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "retentionPeriod",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "schedulerPeriod",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "basic",
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "bootGroup",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "journal",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "networks",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "priority",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "recovery",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "scripting",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "vms",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "vmIdentifier",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "nics",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "nicIdentifier",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "volumes",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[Parameter(
ParameterSetName = "volumeIdentifier",
ValueFromPipeline = $true,
ValueFromRemainingArguments = $true,
Mandatory = $true
)]
[string]$vpgSettingsIdentifier,
[Parameter(
ParameterSetName = "backup",
Mandatory = $true
)]
[switch]$backup,
[Parameter(
ParameterSetName = "dayOfWeek",
Mandatory = $true
)]
[switch]$dayOfWeek,
[Parameter(
ParameterSetName = "retentionPeriod",
Mandatory = $true
)]
[switch]$retentionPeriod,
[Parameter(
ParameterSetName = "schedulerPeriod",
Mandatory = $true
)]
[switch]$schedulerPeriod,
[Parameter(
ParameterSetName = "basic",
Mandatory = $true
)]
[switch]$basic,
[Parameter(
ParameterSetName = "bootGroup",
Mandatory = $true
)]
[switch]$bootgroup,
[Parameter(
ParameterSetName = "journal",
Mandatory = $true
)]
[switch]$journal,
[Parameter(
ParameterSetName = "networks",
Mandatory = $true
)]
[switch]$networks,
[Parameter(
ParameterSetName = "priority",
Mandatory = $true
)]
[switch]$priority,
[Parameter(
ParameterSetName = "recovery",
Mandatory = $true
)]
[switch]$rcovery,
[Parameter(
ParameterSetName = "scripting",
Mandatory = $true
)]
[switch]$scripting,
[Parameter(
ParameterSetName = "vms",
Mandatory = $true )]
[switch]$vms,
[Parameter(
ParameterSetName = "vmIdentifier",
Mandatory = $true
)]
[Parameter(
ParameterSetName = "nics",
Mandatory = $true
)]
[Parameter(
ParameterSetName = "volumes",
Mandatory = $true
)]
[Parameter(
ParameterSetName = "nicIdentifier",
Mandatory = $true
)]
[Parameter(
ParameterSetName = "volumeIdentifier",
Mandatory = $true
)]
[string]$vmIdentifier,
[Parameter(
ParameterSetName = "nics",
Mandatory = $true
)]
[switch]$nics,
[Parameter(
ParameterSetName = "nicIdentifier",
Mandatory = $true
)]
[string]$nicIdentifier,
[Parameter(
ParameterSetName = "volumes",
Mandatory = $true
)]
[switch]$volumes,
[Parameter(
ParameterSetName = "volumeIdentifier",
Mandatory = $true
)]
[string]$volumeIdentifier<#,
[Parameter(
ParameterSetName = "vpgSettingsIdentifier",
Mandatory = $true
)]
[switch]$allSettings #>
)
begin {
$baseUri = "vpgSettings"
}
process {
if ( $PSCmdlet.ParameterSetName -eq "default" ) {
$results = Invoke-ZertoRestRequest -uri $baseUri
} elseif ($PSCmdlet.ParameterSetName -eq "vpgSettingsIdentifier") {
$uri = "{0}/{1}" -f $baseUri, $vpgSettingsIdentifier
$results = Invoke-ZertoRestRequest -uri $uri
} elseif ( $PSCmdlet.ParameterSetName -eq "dayOfWeek" -or $PSCmdlet.ParameterSetName -eq "retentionPeriod" -or $PSCmdlet.ParameterSetName -eq "schedulerPeriod" ) {
$uri = "{0}/{1}/backup/{2}" -f $baseUri, $vpgSettingsIdentifier, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
} elseif ( $PSCmdlet.ParameterSetName -eq "nics" -or $PSCmdlet.ParameterSetName -eq "volumes" ) {
$uri = "{0}/{1}/vms/{2}/{3}" -f $baseUri, $vpgSettingsIdentifier, $vmIdentifier, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
} elseif ( $PSCmdlet.ParameterSetName -eq "vmIdentifier" ) {
$uri = "{0}/{1}/vms/{2}" -f $baseUri, $vpgSettingsIdentifier, $vmIdentifier
$results = Invoke-ZertoRestRequest -uri $uri
} elseif ( $PSCmdlet.ParameterSetName -eq "nicIdentifier" ) {
$uri = "{0}/{1}/vms/{2}/nics/{3}" -f $baseUri, $vpgSettingsIdentifier, $vmIdentifier, $nicIdentifier
$results = Invoke-ZertoRestRequest -uri $uri
} elseif ( $PSCmdlet.ParameterSetName -eq "volumeIdentifier" ) {
$uri = "{0}/{1}/vms/{2}/volumes/{3}" -f $baseUri, $vpgSettingsIdentifier, $vmIdentifier, $volumeIdentifier
$results = Invoke-ZertoRestRequest -uri $uri
} else {
$uri = "{0}/{1}/{2}" -f $baseUri, $vpgSettingsIdentifier, $PSCmdlet.ParameterSetName.ToLower()
$results = Invoke-ZertoRestRequest -uri $uri
}
}
end {
return $results
}
}
+44
View File
@@ -0,0 +1,44 @@
function Get-ZertoVra {
[cmdletbinding(
DefaultParameterSetName = "Default"
)]
param(
[Parameter( ParameterSetName = "ipConfig" )]
[switch]$ipconfigurationtypes,
[Parameter( ParameterSetName = "Statuses" )]
[switch]$statuses,
[Parameter( ParameterSetName = "vraIdentifier" )]
[string[]]$vraIdentifier
)
begin {
$baseUri = "vras"
$returnObject = [System.Collections.ArrayList]@()
}
process {
if ( $ipconfigurationtypes ) {
$uri = "{0}/ipconfigurationtypes" -f $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject = $results
} elseif ( $statuses ) {
$uri = "{0}/statuses" -f $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject = $results
} elseif ( $PSCmdlet.ParameterSetName -eq "vraIdentifierifier" ) {
foreach ( $vraId in $vraIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $vraId
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
} else {
$uri = $baseUri
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject = $results
}
}
end {
return $returnObject
}
}
+29
View File
@@ -0,0 +1,29 @@
function Get-ZertoZorg {
[cmdletbinding( DefaultParameterSetName = "default" )]
param(
[Parameter( ParameterSetName = "zorgIdentifier" )]
[string[]]$zorgIdentifier
)
begin {
$baseUri = "zorgs"
$returnObject = [System.Collections.ArrayList]@()
}
process {
if ( $PSCmdlet.ParameterSetName -eq "default" ) {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results)
} elseif ( $PSCmdlet.ParameterSetName -eq "zorgIdentifier" ) {
foreach ( $id in $zorgIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
}
end {
return $returnObject
}
}
+29
View File
@@ -0,0 +1,29 @@
function Get-ZertoZsspSession {
[cmdletbinding( DefaultParameterSetName = "default" )]
param(
[Parameter( ParameterSetName = "zsspSessionIdentifier" )]
[string[]]$zsspSessionIdentifier
)
begin {
$baseUri = "zsspSessionIdentifier"
$returnObject = [System.Collections.ArrayList]@()
}
process {
if ( $PSCmdlet.ParameterSetName -eq "default" ) {
$results = Invoke-ZertoRestRequest -uri $baseUri
$returnObject.Add($results)
} elseif ( $PSCmdlet.ParameterSetName -eq "zsspSessionIdentifier" ) {
foreach ( $id in $zsspSessionIdentifier ) {
$uri = "{0}/{1}" -f $baseUri, $id
$results = Invoke-ZertoRestRequest -uri $uri
$returnObject.Add($results)
}
}
}
end {
return $returnObject
}
}
+49
View File
@@ -0,0 +1,49 @@
function Invoke-ZertoRestRequest {
[cmdletbinding()]
param(
[string]$method = "GET",
[string]$uri,
[string]$apiVersion = "v1",
[string]$body,
[string]$contentType = "application/json",
[System.Management.Automation.PSCredential]
$credential,
[switch]$returnHeaders
)
$callerErrorActionPreference = $ErrorActionPreference
if ( Test-Path Env:zertoConnectionInformation ) {
$zertoConnectionInformation = $(Get-Item -Path Env:zertoConnectionInformation).value | ConvertFrom-Json
} else {
Write-Error -Message "Zerto Connection does not Exist. Please run Connect-ZertoServer first to establish a connection"
break
}
if ( Test-Path Env:zertoAuthorizationHeaders ) {
$json = $(Get-Item Env:zertoAuthorizationHeaders).value | ConvertFrom-Json
$headers = @{}
$json.psobject.properties | ForEach-Object { $headers[$_.Name] = $_.Value }
} else {
$headers = $null
}
if ( (Test-Path Env:zertoAuthorizationHeaders) -and $([datetime]$zertoConnectionInformation.lastAction).addMinutes(30) -lt $(get-date) ) {
Write-Error -Message "Authorization Token has Expired or Does not exist in Env variables. Please re-authorize to the Zerto Virtual Manager"
break
} else {
$submittedURI = "https://{0}:{1}/{2}/{3}" -f $zertoConnectionInformation.zertoServer, $zertoConnectionInformation.zertoPort, $apiVersion, $uri
try {
$lastAction = (get-date).Ticks
$apiRequestResults = Invoke-RestMethod -Uri $submittedURI -Headers $headers -Method $method -Body $body -ContentType $contentType -Credential $credential -SkipCertificateCheck -ResponseHeadersVariable responseHeaders -TimeoutSec 100
$zertoConnectionInformation.lastAction = $lastAction
Set-Item -Path Env:zertoConnectionInformation -Value $($zertoConnectionInformation | ConvertTo-Json -Compress)
} catch {
Write-Error -ErrorRecord $_ -ErrorAction $callerErrorActionPreference
}
if (-not $returnHeaders) {
return $apiRequestResults
} else {
$apiRequestAndHeaderResults = New-Object -TypeName psobject
$apiRequestAndHeaderResults | Add-Member -MemberType NoteProperty -Name "apiRequestResults" -Value $apiRequestResults
$apiRequestAndHeaderResults | Add-Member -MemberType NoteProperty -Name "Headers" -Value $responseHeaders
return $apiRequestAndHeaderResults
}
}
}
+18
View File
@@ -0,0 +1,18 @@
function New-ZertoApiFilter {
[cmdletbinding()]
param(
[Parameter( Mandatory = $true )]
[hashtable]$filterTable
)
[string]$returnString = "?"
foreach ( $key in $filterTable.Keys ) {
if ($returnString.Length -gt 1) {
$returnString = "{0}&{1}={2}" -f $returnString, $key, $filterTable[$key]
} else {
$returnString = "{0}{1}={2}" -f $returnString, $key, $filterTable[$key]
}
}
return $returnString
}