lib/ResourceReports.ps1

#region Zerto Resoure Report

# .ExternalHelp ZertoModule.psm1-help.xml
Function Get-ZertoResouresReport {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false, HelpMessage = 'Zerto Session Name')][String]$ZertoSession = "Default",
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report From Time (YYYY-MM-DD HH:MM:SS)')] [string] $FromTime,
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report To Time (YYYY-MM-DD HH:MM:SS)')] [string] $ToTime,
        [Parameter(Mandatory = $false, HelpMessage = 'Zerto Report Start Index ')] [string] $StartIndex,
        [Parameter(Mandatory = $false, HelpMessage = 'Zerto Report Records to retrieve 1 to 500')] [string] $Count = 500
    )

    $baseURL = "https://" + $ZertoServer + ":" + $ZertoPort + "/ZvmService/ResourcesReport/"
    $TypeJSON = "application/json"


    if ($Count -lt 1 -or $Count -gt 500) {
        throw "Invalid Count - must be from 1 to 500"
    }

    $FullURL = $baseURL + "getSamples"
    if ($FromTime -or $ToTime -or $StartIndex -or $Count ) {
        $qs = [ordered] @{}
        if ($FromTime) { if (Parse-ZertoDate($FromTime)) { $qs.Add("fromTimeString", $FromTime) } else { throw "Invalid FromTime: '$FromTime'" } }
        if ($ToTime) { if (Parse-ZertoDate($ToTime)) { $qs.Add("toTimeString", $ToTime) } else { throw "Invalid ToTime: '$ToTime'" } }
        if ($StartIndex) { $qs.Add("startIndex", $StartIndex) }
        if ($Count) { $qs.Add("count", $Count) }
        $FullURL += Get-QueryStringFromHashTable -QueryStringHash $QS
    }
    Write-Verbose $FullURL

    try {
        $RestMethodSplat = @{
            Uri         = $FullURL
            TimeoutSec  = 100
            ContentType = $TypeJSON
            Method      = 'GET'
            WebSession  = $ZertoSessionConfig.ZertoWebSession
        }
        $Result = Invoke-RestMethod @RestMethodSplat @ZertoCertSettings
    }
    catch {
        throw $_.Exception.Message
    }
    return $Result
}

# .ExternalHelp ZertoModule.psm1-help.xml
Function Get-ZertoResourcesReportAdvFilter {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false, HelpMessage = 'Zerto Session Name')][String]$ZertoSession = "Default",
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report From Time (YYYY-MM-DD HH:MM:SS)')] [string] $FromTime,
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report To Time (YYYY-MM-DD HH:MM:SS)')] [string] $ToTime,
        [Parameter(Mandatory = $false, HelpMessage = 'Zerto Report Start Index ')] [string] $StartIndex,
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report Records to Retrieve 1 to 500')] [string] $Count,
        [Parameter(Mandatory = $true, HelpMessage = 'Zerto Report Records Advanced Filter')] [string] $Filter
    )

    $baseURL = "https://" + $ZertoServer + ":" + $ZertoPort + "/ZvmService/ResourcesReport/"
    $TypeJSON = "application/json"


    $FullURL = $baseURL + "getSamples"
    if ($FromTime -or $ToTime -or $StartIndex -or $Count -or $Filter ) {
        $qs = [ordered] @{}
        if ($FromTime) { if (Parse-ZertoDate($FromTime)) { $qs.Add("fromTimeString", $FromTime) } else { throw "Invalid FromTime: '$FromTime'" } }
        if ($ToTime) { if (Parse-ZertoDate($ToTime)) { $qs.Add("toTimeString", $ToTime) } else { throw "Invalid ToTime: '$ToTime'" } }
        if ($StartIndex) { $qs.Add("startIndex", $StartIndex) }
        if ($Count) { $qs.Add("count", $Count) }
        if ($Filter) { $qs.Add("Filter", $Filter) }
        $FullURL += Get-QueryStringFromHashTable -QueryStringHash $QS
    }
    Write-Verbose $FullURL

    try {
        $RestMethodSplat = @{
            Uri         = $FullURL
            TimeoutSec  = 100
            ContentType = $TypeJSON
            Method      = 'GET'
            WebSession  = $ZertoSessionConfig.ZertoWebSession
        }
        $Result = Invoke-RestMethod @RestMethodSplat @ZertoCertSettings
    }
    catch {
        throw $_.Exception.Message
    }
    return $Result
}
#endregion