exports/ProxyCmdletDefinitions.ps1


# ----------------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.9.4, generator: @autorest/powershell@3.0.498)
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# ----------------------------------------------------------------------------------

<#
.Synopsis
Adds SSL certificate check
.Description
Adds SSL certificate check
.Example
PS C:\>Add-ZvmSslCheck
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/add-zvmsslcheck
#>

function Add-ZvmSslCheck {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Add', PositionalBinding=$false)]
param()

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Add = 'Zerto.Zvm.Commandlets\Add-ZvmSslCheck_Add';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Add session.
Authorization header or login password from AddSessionDataApi is required.
Header has higher priority.
.Description
Add session.
Authorization header or login password from AddSessionDataApi is required.
Header has higher priority.
.Example
PS C:\>Connect-Zvm –Host MyZVMHost.company.com
.Example
PS C:\>Connect-Zvm –Host MyZVMHost.company.com
 
Connect-Zvm_Connect: No connection could be made because the target machine actively refused it. (127.0.0.1:9669)
.Example
PS C:\>Connect-Zvm –Host MyZVMHost.company.com
 
Connect-Zvm_Connect: Failed logging in to 192.168.128.10 with username root. Error was 'Exception running : StandaloneVcLogin'
.Example
PS C:\>Connect-Zvm –Host MyZVMHost.company.com
 
Connect-Zvm_Connect: Failed logging in to 192.168.128.10 with username root. Error was 'Cannot complete login due to an incorrect user name or password.'
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/connect-zvm
#>

function Connect-Zvm {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Connect', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Runtime')]
    [System.String]
    # ZVM host/IP
    ${HostName},

    [Parameter(Position=1, Mandatory)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # User credentials
    ${Credential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials},

    [Parameter()]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Int32]
    # ZVM Port
    ${Port}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Connect = 'Zerto.Zvm.Commandlets\Connect-Zvm_Connect';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Close current session (Auth)
.Description
Close current session (Auth)
.Example
PS C:\>Disconnect-Zvm
.Example
PS C:\>Disconnect-Zvm
 
Disconnect-Zvm_Disconnect: Login to ZVM first.
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/disconnect-zvm
#>

function Disconnect-Zvm {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Disconnect', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Disconnect = 'Zerto.Zvm.Commandlets\Disconnect-Zvm_Disconnect';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Set the login banner settings of the current site (Auth)
.Description
Set the login banner settings of the current site (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.ILoginBannerSettingsApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <ILoginBannerSettingsApi>: .
  [IsLoginBannerEnabled <Boolean?>]:
  [LoginBanner <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/edit-zvmlocalsiteloggingbanner
#>

function Edit-ZvmLocalSiteLoggingBanner {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='EditExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Edit', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ILoginBannerSettingsApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${IsLoginBannerEnabled},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${LoginBanner},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Edit = 'Zerto.Zvm.Commandlets\Edit-ZvmLocalSiteLoggingBanner_Edit';
            EditExpanded = 'Zerto.Zvm.Commandlets\Edit-ZvmLocalSiteLoggingBanner_EditExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Edit existing repository (Auth)
.Description
Edit existing repository (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IRepositoriesSettingsApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
AZURE <IAzureBackupTargetStorageApi>: .
  [AzureAppId <String>]:
  [AzureAppKey <String>]:
  [AzureCloud <String>]:
  [AzureSa <String>]:
  [AzureTenantId <String>]:
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsArchiveTiering <Boolean?>]:
  [IsCoolTiering <Boolean?>]:
  [IsImmutable <Boolean?>]:
  [Path <String>]:
  [TieringToArchiveInDays <Int32?>]:
  [TieringToCoolInDays <Int32?>]:
 
BODY <IRepositoriesSettingsApi>: .
  [Azure <IAzureBackupTargetStorageApi>]:
    [AzureAppId <String>]:
    [AzureAppKey <String>]:
    [AzureCloud <String>]:
    [AzureSa <String>]:
    [AzureTenantId <String>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsArchiveTiering <Boolean?>]:
    [IsCoolTiering <Boolean?>]:
    [IsImmutable <Boolean?>]:
    [Path <String>]:
    [TieringToArchiveInDays <Int32?>]:
    [TieringToCoolInDays <Int32?>]:
  [Catalyst <ICatalystBackupTargetStorageApi>]:
    [CatalystServer <String>]:
    [CatalystStoreName <String>]:
    [Password <String>]:
    [Path <String>]:
    [Username <String>]:
  [ConnectionType <String>]:
  [DefaultRepository <Boolean?>]:
  [FreeCapacityGb <Int64?>]:
  [IsIndexRepository <Boolean?>]:
  [Nfs <INfsBackupTargetStorageObjectApi>]:
    [Path <String>]:
  [RepositoryIdentifier <String>]:
  [RepositoryName <String>]:
  [RepositoryState <IRepositoryStateApi>]:
    [AllocatedSpaceInGb <Int64?>]:
    [AvailableSpaceInGb <Int64?>]:
    [UsedSpaceInGb <Int64?>]:
  [S3 <IAwss3BackupTargetStorageApi>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsGlacierTiering <Boolean?>]:
    [IsImmutable <Boolean?>]:
    [IsStandardIaTiering <Boolean?>]:
    [Path <String>]:
    [S3AccessKey <String>]:
    [S3BucketName <String>]:
    [S3EndpointUrl <String>]:
    [S3Region <String>]:
    [S3SecretKey <String>]:
    [S3StorageClass <String>]:
    [TieringToGlacierInDays <Int32?>]:
    [TieringToStandardIaInDays <Int32?>]:
  [S3Compatible <IS3CompatibleStorageObjectApi>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsImmutable <Boolean?>]:
    [Path <String>]:
    [S3AccessKey <String>]:
    [S3BucketName <String>]:
    [S3EndpointUrl <String>]:
    [S3Region <String>]:
    [S3SecretKey <String>]:
  [Smb <ISmbBackupTargetStorageApi>]:
    [Password <String>]:
    [Path <String>]:
    [UserName <String>]:
  [StorageType <String>]:
  [TotalCapacityGb <Int64?>]:
  [UsedCapacityGb <Int64?>]:
 
CATALYST <ICatalystBackupTargetStorageApi>: .
  [CatalystServer <String>]:
  [CatalystStoreName <String>]:
  [Password <String>]:
  [Path <String>]:
  [Username <String>]:
 
NFS <INfsBackupTargetStorageObjectApi>: .
  [Path <String>]:
 
REPOSITORYSTATE <IRepositoryStateApi>: .
  [AllocatedSpaceInGb <Int64?>]:
  [AvailableSpaceInGb <Int64?>]:
  [UsedSpaceInGb <Int64?>]:
 
S3 <IAwss3BackupTargetStorageApi>: .
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsGlacierTiering <Boolean?>]:
  [IsImmutable <Boolean?>]:
  [IsStandardIaTiering <Boolean?>]:
  [Path <String>]:
  [S3AccessKey <String>]:
  [S3BucketName <String>]:
  [S3EndpointUrl <String>]:
  [S3Region <String>]:
  [S3SecretKey <String>]:
  [S3StorageClass <String>]:
  [TieringToGlacierInDays <Int32?>]:
  [TieringToStandardIaInDays <Int32?>]:
 
S3COMPATIBLE <IS3CompatibleStorageObjectApi>: .
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsImmutable <Boolean?>]:
  [Path <String>]:
  [S3AccessKey <String>]:
  [S3BucketName <String>]:
  [S3EndpointUrl <String>]:
  [S3Region <String>]:
  [S3SecretKey <String>]:
 
SMB <ISmbBackupTargetStorageApi>: .
  [Password <String>]:
  [Path <String>]:
  [UserName <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/edit-zvmrepository
#>

function Edit-ZvmRepository {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='EditExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # .
    ${RepositoryId},

    [Parameter(ParameterSetName='Edit', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRepositoriesSettingsApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IAzureBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for AZURE properties and create a hash table.
    ${Azure},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ICatalystBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for CATALYST properties and create a hash table.
    ${Catalyst},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${ConnectionType},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${DefaultRepository},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${FreeCapacityGb},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${IsIndexRepository},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.INfsBackupTargetStorageObjectApi]
    # .
    # To construct, see NOTES section for NFS properties and create a hash table.
    ${Nfs},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RepositoryIdentifier1},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RepositoryName},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRepositoryStateApi]
    # .
    # To construct, see NOTES section for REPOSITORYSTATE properties and create a hash table.
    ${RepositoryState},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IAwss3BackupTargetStorageApi]
    # .
    # To construct, see NOTES section for S3 properties and create a hash table.
    ${S3},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IS3CompatibleStorageObjectApi]
    # .
    # To construct, see NOTES section for S3COMPATIBLE properties and create a hash table.
    ${S3Compatible},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ISmbBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for SMB properties and create a hash table.
    ${Smb},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${StorageType},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${TotalCapacityGb},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${UsedCapacityGb},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Edit = 'Zerto.Zvm.Commandlets\Edit-ZvmRepository_Edit';
            EditExpanded = 'Zerto.Zvm.Commandlets\Edit-ZvmRepository_EditExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Update VPG Scratch settings (Auth)
.Description
Update VPG Scratch settings (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IVpgSettingsScratchApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IVpgSettingsScratchApi>: .
  [DatastoreClusterIdentifier <String>]:
  [DatastoreIdentifier <String>]:
  [Limitation <IVpgSettingsScratchLimitationApi>]:
    [HardLimitInMb <Int32?>]:
    [HardLimitInPercent <Int32?>]:
    [WarningThresholdInMb <Int32?>]:
    [WarningThresholdInPercent <Int32?>]:
 
LIMITATION <IVpgSettingsScratchLimitationApi>: .
  [HardLimitInMb <Int32?>]:
  [HardLimitInPercent <Int32?>]:
  [WarningThresholdInMb <Int32?>]:
  [WarningThresholdInPercent <Int32?>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/edit-zvmvpgsettingscratch
#>

function Edit-ZvmVpgSettingScratch {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='EditExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Vpg Settings Identfifier.
    # Related endpoint: `/v1/vpgSettings`
    ${VpgSettingsId},

    [Parameter(ParameterSetName='Edit', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVpgSettingsScratchApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${DatastoreClusterId},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${DatastoreId},

    [Parameter(ParameterSetName='EditExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVpgSettingsScratchLimitationApi]
    # .
    # To construct, see NOTES section for LIMITATION properties and create a hash table.
    ${Limitation},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Edit = 'Zerto.Zvm.Commandlets\Edit-ZvmVpgSettingScratch_Edit';
            EditExpanded = 'Zerto.Zvm.Commandlets\Edit-ZvmVpgSettingScratch_EditExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of all available alert help identifiers.
(Auth)
.Description
Get a list of all available alert help identifiers.
(Auth)
.Example
PS C:\>Get-ZvmAlertHelpId
 
AWS0001
ZCA0001
ZCA0002
ZCA0003
BCK0001
BCK0002
BCK0005
BCK0006
BCK0007
LTR0001
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmalerthelpid
#>

function Get-ZvmAlertHelpId {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmAlertHelpId_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of all available alert levels.
(Auth)
.Description
Get a list of all available alert levels.
(Auth)
.Example
PS C:\>Get-ZvmAlertLevel
 
Warning
Error
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmalertlevel
#>

function Get-ZvmAlertLevel {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmAlertLevel_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of latest Zerto alerts.
You can filter the results with additional parameters.
(Auth)
.Description
Get a list of latest Zerto alerts.
You can filter the results with additional parameters.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
.Example
PS C:\>Get-ZvmAlert
 
HelpIdentifier Level Entity IsDismissed TurnedOn Description
-------------- ----- ------ ----------- -------- -----------
VRA0001 Warning Vra False 12/15/2020 9:55:17 AM Host 10.171.65.35 has no VRA installed, and is part of cluster Cluster that contains hosts with installed VRAs.
.Example
PS C:\>Get-ZvmAlert -Entity Vpg
 
HelpIdentifier Level Entity IsDismissed TurnedOn Description
-------------- ----- ------ ----------- -------- -----------
VPG0003 Warning Vpg False 12/7/2020 6:23:54 PM VPG MyVPG01 journal history is less than 75% of the configured 1 day. This has occurred because of a synchronization between the protected and recovery sites and will …
VPG0003 Warning Vpg False 12/7/2020 6:23:54 PM VPG MyVPG02 journal history is less than 75% of the configured 1 day. This has occurred because of a synchronization between the protected and recovery sites and will …
VPG0003 Warning Vpg False 12/7/2020 6:23:54 PM VPG MyVPG03 journal history is less than 75% of the configured 1 day. This has occurred because of a synchronization between the protected and recovery sites and will automa…
.Example
PS C:\>Get-ZvmAlert | fl
 
Link.Identifier : d17d4837-4242-4123-bef1-4f2bbbcd46b9
AffectedZorgs.Identifier :
AffectedVpgs.Identifier :
Site.Identifier : af25ce75-4bc7-43f1-beaf-ed312bf774d3
HelpIdentifier : VRA0028
Level : Warning
Entity : Vra
IsDismissed : False
TurnedOn : 1/8/2021 09:37:03
Description : VRA on host 192.168.128.1 is powered off.
 
Link.Identifier : 01c716e5-54eb-454b-9202-8d9b7225e9ba
AffectedZorgs.Identifier :
AffectedVpgs.Identifier :
Site.Identifier : af25ce75-4bc7-43f1-beaf-ed312bf774d3
HelpIdentifier : VRA0028
Level : Warning
Entity : Vra
IsDismissed : False
TurnedOn : 1/8/2021 09:37:03
Description : VRA on host 192.168.128.2 is powered off.
.Example
PS C:\>Get-ZvmAlert -AlertId d17d4837-4242-4123-bef1-4f2bbbcd46b9
 
HelpIdentifier Level Entity IsDismissed TurnedOn Description
-------------- ----- ------ ----------- -------- -----------
VRA0028 Warning Vra False 1/8/2021 09:37:03 VRA on host 192.168.128.1 is powered off.
 
.Outputs
Zerto.Zvm.Models.IAlertApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmalert
#>

function Get-ZvmAlert {
[OutputType([Zerto.Zvm.Models.IAlertApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Alert identifier.
    # Related endpoint: `/v1/alerts`
    ${AlertId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval end date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${EndDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The alert entity type.
    # Related endpoint: `/v1/alerts/entity`
    ${Entity},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The alert help identifier associated with the alert.
    # Related endpoint: `/v1/alerts/helpidentifiers`
    ${HelpId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.Management.Automation.SwitchParameter]
    # True if alert was dismissed
    ${IsDismissed},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The alert level.
    # Related endpoint: `/v1/alerts/levels`
    ${Level},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The internal ZVM site identifier.
    # Related endpoints: `v1/localsite`, `v1/peersites`
    ${SiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval start date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${StartDate},

    [Parameter(ParameterSetName='Get', Position=0)]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the ZORG.
    # Related endpoint: `v1/zorgs`
    ${ZorgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmAlert_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmAlert_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of all available event types (Auth)
.Description
Get a list of all available event types (Auth)
.Example
PS C:\>Get-ZvmEventType
 
CreateProtectionGroup
RemoveProtectionGroup
FailOver
FailOverTest
StopFailOverTest
Move
ProtectVM
UnprotectVM
InstallVra

 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmeventtype
#>

function Get-ZvmEventType {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmEventType_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of latest Zerto events.
You can filter the results with additional parameters.
(Auth)
.Description
Get a list of latest Zerto events.
You can filter the results with additional parameters.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
.Example
PS C:\>Get-ZvmEvent
 
HelpLink EventType OccurredOn Description
-------- -------------- ------------------- ------------------
EV0070 Login 12/14/2020 1:41:39 PM ZVM Login. Success.
.Example
PS C:\>Get-ZvmEvent | fl
 
EventIdentifier : e6ffc5bb-f413-445b-a210-eda3e4787600
OccurredOn : 1/8/2021 10:09:20
Description : ZVM Login. Success.
HelpLink : EV0070
EventType : Login
EventCategory : Events
EntityType : Site
ZorgIdentifier :
ZorgName :
SiteIdentifier : af25ce75-4bc7-43f1-beaf-ed312bf774d3
SiteName : generic-zcloud2_vcd10_local at Zerto
UserName : \System
Vpgs.VpgIdentifier :
Vpgs.VpgName :
EventCompletedSuccessfully : True
RelatedEntities.Alerts :
RelatedEntities.FlrSessions :
RelatedEntities.Hosts :
RelatedEntities.Sites : af25ce75-4bc7-43f1-beaf-ed312bf774d3
RelatedEntities.Vpgs :
RelatedEntities.Zorgs :
.Example
PS C:\>Get-ZvmEvent -EventId 5eebedea-660b-4c45-9f54-26773981b37f
 
HelpLink EventType OccurredOn Description
-------- -------------- ------------------- ------------------
EV0070 Login 12/14/2020 1:41:39 PM ZVM Login. Success.
 
.Outputs
Zerto.Zvm.Models.IEventApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmevent
#>

function Get-ZvmEvent {
[OutputType([Zerto.Zvm.Models.IEventApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Event identifier.
    # Related endpoint: `/v1/events`
    ${EventId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Alert identifier.
    # Related endpoint: `/v1/alerts`
    ${AlertId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The event category to return.
    # Related endpoint: `/v1/events/categories`
    ${Category},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval end date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${EndDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The entity type to return.
    # Related endpoint: `/v1/events/entities`
    ${EntityType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # [Obsolete] The event category to return.
    # Related endpoint: `/v1/events/categories`
    ${EventCategory},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The event type.
    # Related endpoint: `/v1/events/types`
    ${EventType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The internal ZVM site identifier.
    # Related endpoints: `v1/localsite`, `v1/peersites`
    ${SiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The name of the site
    ${SiteName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval start date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${StartDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The username for which the event occurred.
    # Tasks run by ZVM have the username `System`
    ${UserName},

    [Parameter(ParameterSetName='Get', Position=0)]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # [Obsolete] The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the ZORG.
    # Related endpoint: `v1/zorgs`
    ${ZorgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmEvent_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmEvent_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get license details of the ZVM (Auth)
.Description
Get license details of the ZVM (Auth)
.Example
PS C:\>Get-ZvmLicense
 
ExpiryTime LicenseType SiteName MaxVms TotalVmsCount LicenseKey
---------- ----------- -------- ------ ------------- ----------
2020-12-31 CloudO2M site3_QA_10.171.64.228 1000 6 8LTPJCDEWRYYTN5ASF2HXWMP5P2EU8MFCJ9V
 
.Outputs
Zerto.Zvm.Models.ILicenseApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmlicense
#>

function Get-ZvmLicense {
[OutputType([Zerto.Zvm.Models.ILicenseApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLicense_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get the login banner settings of the current site
.Description
Get the login banner settings of the current site
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.ILoginBannerSettingsApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmlocalsiteloggingbanner
#>

function Get-ZvmLocalSiteLoggingBanner {
[OutputType([Zerto.Zvm.Models.ILoginBannerSettingsApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLocalSiteLoggingBanner_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about the local site (Auth)
.Description
Get information about the local site (Auth)
.Example
PS C:\>Get-ZvmLocalSite
 
SiteName IPAddress SiteType Version ZVmApiVersion
-------------- ----------------- -------------- ----------- ---------------------
vSphere-Site01 192.168.1.110 VCenter 8.5.0 1.39.0
 
.Outputs
Zerto.Zvm.Models.ILocalSiteApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmlocalsite
#>

function Get-ZvmLocalSite {
[OutputType([Zerto.Zvm.Models.ILocalSiteApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLocalSite_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of full Retention sets (Auth)
.Description
Get a list of full Retention sets (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IRetentionSetInfoApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmltrcatalogfullretentionset
#>

function Get-ZvmLtrCatalogFullRetentionSet {
[OutputType([Zerto.Zvm.Models.IRetentionSetInfoApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the repository where the Retention Set is stored.
    # Relatd endpoint: `/v1/virtualizationsites/{siteIdentifier}/repositories`
    ${RepositoryId},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the ZORG.
    # Related endpoint: `v1/zorgs`
    ${ZorgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLtrCatalogFullRetentionSet_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of incremental Retention sets (Auth)
.Description
Get a list of incremental Retention sets (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IRetentionSetInfoApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmltrcatalogincremental
#>

function Get-ZvmLtrCatalogIncremental {
[OutputType([Zerto.Zvm.Models.IRetentionSetInfoApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The unique identifier of the Retention Set.
    # Related endpoint: `v1/ltr/catalog/fullretentionsets`
    ${RetentionSetId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLtrCatalogIncremental_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get the original settings for a VM in a Retention set (Auth)
.Description
Get the original settings for a VM in a Retention set (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IRetentionSetVMSettingsApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmltrcatalogvmoriginalsetting
#>

function Get-ZvmLtrCatalogVmOriginalSetting {
[OutputType([Zerto.Zvm.Models.IRetentionSetVMSettingsApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The unique identifier of the Retention Set.
    # Related endpoint: `v1/ltr/catalog/fullretentionsets`
    ${RetentionSetId},

    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The idenfier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLtrCatalogVmOriginalSetting_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of the available Retention sets for a VM in all Repositories in the site (Auth)
.Description
Get a list of the available Retention sets for a VM in all Repositories in the site (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IRetentionSetsApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmltrcatalogvmretentionset
#>

function Get-ZvmLtrCatalogVmRetentionSet {
[OutputType([Zerto.Zvm.Models.IRetentionSetsApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The idenfier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmLtrCatalogVmRetentionSet_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Generate a token for pairing (Auth)
.Description
Generate a token for pairing (Auth)
.Example
PS C:\>Get-ZvmPairingToken
 
Token UtcExpirationDate
----- -----------------
NIjkL*************RdLKhCOQzRPn/68wmup+c= 12/09/2020 06:36 PM
 
.Outputs
Zerto.Zvm.Models.IPairingTokenResult
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmpairingtoken
#>

function Get-ZvmPairingToken {
[OutputType([Zerto.Zvm.Models.IPairingTokenResult])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmPairingToken_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of all peer sites (Auth)
.Description
Get a list of all peer sites (Auth)
.Example
PS C:\>Get-ZvmPeer
 
PeerSiteName HostName Port SiteType Version PairingStatus UsedStorage
-------------- ------------- ----- --------- ------- ------------- -----------
vSphere-Site02 192.168.1.111 9071 VCenter 8.5.0 Paired 3434496
azure-Site 192.168.1.112 9071 Azure 8.5.0 Paired 0
 
.Outputs
Zerto.Zvm.Models.IPeerSiteApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmpeer
#>

function Get-ZvmPeer {
[OutputType([Zerto.Zvm.Models.IPeerSiteApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the peer site.
    # Related endpoints: `v1/peersites`
    ${SiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The IP address of a ZVM, paired with this site
    ${HostName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The site location, as specified in the site information
    ${Location},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The pairing status.
    # Related endpoint: `/v1/peersites/pairingstatuses`
    ${PairingStatus},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The name of a peer site.
    # The name is case-sensitive
    ${PeerName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.Int32]
    # The port used to access peer sites.
    # The default port is 9081
    ${Port},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmPeer_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmPeer_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get All Repositories (Auth)
.Description
Get All Repositories (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IErrorResponse
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmrepository
#>

function Get-ZvmRepository {
[OutputType([Zerto.Zvm.Models.IErrorResponse])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # .
    ${RepositoryId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # .
    ${ConnectionType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # .
    ${RepositoryName},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmRepository_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmRepository_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get current system date-time in a Local time zone (Auth)
.Description
Get current system date-time in a Local time zone (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.DateTime
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmsystemdatetimeservicedatetimelocal
#>

function Get-ZvmSystemDateTimeServiceDateTimeLocal {
[OutputType([System.DateTime])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmSystemDateTimeServiceDateTimeLocal_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get current system date-time in UTC format (Auth)
.Description
Get current system date-time in UTC format (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.DateTime
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmsystemdatetimeservicedatetimeutc
#>

function Get-ZvmSystemDateTimeServiceDateTimeUtc {
[OutputType([System.DateTime])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmSystemDateTimeServiceDateTimeUtc_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about tasks run on this site.
(Auth)
.Description
Get information about tasks run on this site.
(Auth)
.Example
PS C:\>Get-ZvmTask
 
Type Started Completed CompleteReason Progress State IsCancellable TaskIdentifier
---- ------- --------- -------------- -------- ----- ------------- --------------
InsertTaggedCP 12/7/2020 5:08:36 PM 12/7/2020 5:08:37 PM 100 Completed False 390e6b97-597d-4011-b91d-7160b30bf148.587cfbb5-c22c-4880-995f-df5eb2ddc737
 
.Outputs
Zerto.Zvm.Models.ITaskApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmtask
#>

function Get-ZvmTask {
[OutputType([Zerto.Zvm.Models.ITaskApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the task.
    # Related endpoints: `v1/tasks`
    ${TaskId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The date-time after the tasks ended.
    # Related endpoint: `v1/serverDateTime` for date time format details
    ${CompletedAfterDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The date-time before the tasks ended.
    # Related endpoint: `v1/serverDateTime` for date time format details
    ${CompletedBeforeDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The date-time after the tasks started.
    # Related endpoint: `v1/serverDateTime` for date time format details
    ${StartedAfterDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The date-time before the tasks started.
    # Related endpoint: `v1/serverDateTime` for date time format details
    ${StartedBeforeDate},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The status of the task.
    # Possible values are: `1 or InProgress` | `3 or Paused` | `4 or Failed` | `6 or Completed` | `7 or Cancelling`
    ${Status},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The task type.
    # Related endpoint `/v1/tasks/types`
    ${Type},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmTask_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmTask_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about datastores at the site (Auth)
.Description
Get information about datastores at the site (Auth)
.Example
PS C:\>Get-ZvmVirtualizationSiteDatastore
 
DatastoreIdentifier DatastoreName
------------------- -------------
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.Prod_Datastore Prod_Datastore
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.Prod_Datastore1 Prod_Datastore1
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.Prod_Datastore2 Prod_Datastore2
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.Prod_Datastore3 Prod_Datastore3
 
.Outputs
Zerto.Zvm.Models.IDatastoreNativeApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvirtualizationsitedatastore
#>

function Get-ZvmVirtualizationSiteDatastore {
[OutputType([Zerto.Zvm.Models.IDatastoreNativeApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter()]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The internal ZVM site identifier.
    # Related endpoints: `v1/localsite`, `v1/peersites`
    ${SiteId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVirtualizationSiteDatastore_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about hosts at the site (Auth)
.Description
Get information about hosts at the site (Auth)
.Example
PS C:\>Get-ZvmVirtualizationSiteHost
 
HostIdentifier VirtualizationHostName
-------------- ----------------------
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.MyHost-0 MyHost-0
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.MyHost-1 MyHost-1
 
 
Description:
    The example above lists all the SiteHosts, unfiltered.
.Example
PS C:\>Get-ZvmVirtualizationSiteHost -HostId 840f99fb-4689-2f8b-ea10-2a47a5bb00cc.MyHost-0
 
HostIdentifier VirtualizationHostName
-------------- ----------------------
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.MyHost-0 MyHost-0
 
 
Description:
    The example above retrieves a single SiteHost by its identifier.
.Example
PS C:\>Get-ZvmVirtualizationSiteHost -HostId 'MyHost-1'
 
HostIdentifier VirtualizationHostName
-------------- ----------------------
840f99fb-4689-2f8b-ea10-2a47a5bb00cc.MyHost-1 MyHost-1
 
 
Description:
    The example above retrieves a single SiteHost by its unique name. Note that the "-HostId" parameter can receive either the SiteHost name, or the SiteHost identifier (as in Example 2).
 
.Outputs
Zerto.Zvm.Models.IHostNativeApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvirtualizationsitehost
#>

function Get-ZvmVirtualizationSiteHost {
[OutputType([Zerto.Zvm.Models.IHostNativeApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter()]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The internal ZVM site identifier.
    # Related endpoints: `v1/localsite`, `v1/peersites`
    ${SiteId},

    [Parameter(ParameterSetName='Get1', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the host.
    # Related endpoints: `/v1/virtualizationsites/{siteIdentifier}/hosts`
    ${HostId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVirtualizationSiteHost_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmVirtualizationSiteHost_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of virtual sites connected to this site and all peer sites.
(Auth)
.Description
Get a list of virtual sites connected to this site and all peer sites.
(Auth)
.Example
PS C:\>Get-ZvmVirtualizationSite
 
SiteIdentifier VirtualizationSiteName
------------------------------------ ----------------------
3dba6c5d-3919-49cb-901b-b80ef34b3c01 azure-Site
8c950e40-dd70-4570-a1fe-c2751879c6fd vSphere-Site02
587cfbb5-c22c-4880-995f-df5eb2ddc737 vSphere-Site01
 
.Outputs
Zerto.Zvm.Models.IVirtualizationSiteApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvirtualizationsite
#>

function Get-ZvmVirtualizationSite {
[OutputType([Zerto.Zvm.Models.IVirtualizationSiteApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Position=0)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The internal ZVM site identifier.
    # Related endpoints: `v1/localsite`, `v1/peersites`
    ${SiteId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVirtualizationSite_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmVirtualizationSite_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about protected virtual machines.
You can filter the results with additional parameters.
(Auth)
.Description
Get information about protected virtual machines.
You can filter the results with additional parameters.
(Auth)
.Example
PS C:\>Get-ZvmVm
 
VmName Priority IsVmExists OrganizationName VpgName ProtectedSiteName RecoverySiteName Status SubStatus ActualRpo UsedStorageInMb LastTest
------ --------- ---------- ---------------- -------- ----------------- ----------------- ---------- --------- --------- --------------- --------
MyVM01 Medium True MyVPG01 vSphere-Site01 vSphere-Site02 MeetingSLA None 9 132096
MyVM02 Medium True MyVPG01 vSphere-Site01 vSphere-Site02 MeetingSLA None 9 132096
MyVM03 Medium True MyVPG02 vSphere-Site01 vSphere-Site02 MeetingSLA None 9 132096
.Example
PS C:\>Get-ZvmVm -VmId MyVM01
 
VmName Priority IsVmExists OrganizationName VpgName ProtectedSiteName RecoverySiteName Status SubStatus ActualRpo UsedStorageInMb LastTest
------ --------- ---------- ---------------- -------- ----------------- ----------------- ---------- --------- --------- --------------- --------
MyVM01 Medium True MyVPG01 vSphere-Site01 vSphere-Site02 MeetingSLA None 9 132096
 
.Outputs
Zerto.Zvm.Models.IVMApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvm
#>

function Get-ZvmVm {
[OutputType([Zerto.Zvm.Models.IVMApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Position=0)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the virtual machine.
    # Format: `serverid.moref`
    ${VmId},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.Management.Automation.SwitchParameter]
    # True for including backup virtual machines.
    # False for protected virtual machines only
    ${IncludeBackupedVms},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.Management.Automation.SwitchParameter]
    # Boolean to determine whether to include mounted vms or only unmounted VMs
    ${IncludeMountedVms},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The ZORG for this VPG
    ${OrganizationName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The priority specified for the VPG
    ${Priority},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the protected site where the VPG virtual machines are
    ${ProtectedSiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The protected site type
    ${ProtectedSiteType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the recovery site where the VPG virtual machines are
    ${RecoverySiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The recovery site environment
    ${RecoverySiteType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See protectedSiteIdentifier
    ${SourceSite},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See protectedSiteIdentifier
    ${SourceType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The status of the VPG
    ${Status},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The substatus of the VPG, for example the VPG is in a bitmap sync
    ${SubStatus},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See recoverySiteIdentifier
    ${TargetSite},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See recoverySiteIdentifier
    ${TargetType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The name of the virtual machine
    ${VmName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The name of the VPG
    ${VpgName},

    [Parameter(ParameterSetName='Get1')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVm_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmVm_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get a list of checkpoints for the VPG.
You can filter the results with additional parameters.
(Auth)
.Description
Get a list of checkpoints for the VPG.
You can filter the results with additional parameters.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
.Example
PS C:\>Get-ZvmVpgCheckpoint vpganame_1
 
CheckpointIdentifier Type TimeStamp Tag
-------------------- ---- --------- ---
46074 Standard 12/19/2020 9:36:41 AM
46250 Standard 12/19/2020 9:51:44 AM
46426 Standard 12/19/2020 10:06:45 AM
46602 Standard 12/19/2020 10:21:46 AM
46779 Standard 12/19/2020 10:36:48 AM
46956 Standard 12/19/2020 10:51:48 AM
 
.Outputs
Zerto.Zvm.Models.ICheckpointApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvpgcheckpoint
#>

function Get-ZvmVpgCheckpoint {
[OutputType([Zerto.Zvm.Models.ICheckpointApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The end date of the checkpoint
    ${EndDate},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The start date of the checkpoint
    ${StartDate},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVpgCheckpoint_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get VPG Scratch settings (Auth)
.Description
Get VPG Scratch settings (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IVpgSettingsScratchApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvpgsettingscratch
#>

function Get-ZvmVpgSettingScratch {
[OutputType([Zerto.Zvm.Models.IVpgSettingsScratchApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Vpg Settings Identfifier.
    # Related endpoint: `/v1/vpgSettings`
    ${VpgSettingsId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVpgSettingScratch_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about all VPGs.
(Auth)
.Description
Get information about all VPGs.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
.Example
PS C:\>Get-ZvmVpg
 
VpgName Priority ProtectedSiteName RecoverySiteName VmsCount Status SubStatus ActualRpo UsedStorageInMb LastTest
------- -------- ----------------- ---------------- -------- ------ --------- --------- --------------- --------
MyVPG01 Medium vSphere-Site01 vSphere-Site02 MeetingSLA None 7 396288
MyVPG02 Medium vSphere-Site01 vSphere-Site02 MeetingSLA None 7 924672
MyVPG03 Medium vSphere-Site01 vSphere-Site02 MeetingSLA None 7 528384
MyVPG05 Medium vSphere-Site01 vSphere-Site02 MeetingSLA None 7 528384
MyVPG06 Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
Exchange Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
 
 
Description:
    The example above lists all the VPGs, unfiltered.
.Example
PS C:\>Get-ZvmVpg -VpgId 2819e5cd-499e-4649-9575-71cbd4ec7cea
 
VpgName Priority ProtectedSiteName RecoverySiteName VmsCount Status SubStatus ActualRpo UsedStorageInMb LastTest
------- -------- ----------------- ---------------- -------- ------ --------- --------- --------------- --------
MyVPG05 Medium vSphere-Site01 vSphere-Site02 MeetingSLA None 7 528384
 
 
Description:
    The example above retrieves a single VPG by its GUID identifier.
.Example
PS C:\>Get-ZvmVpg -VpgId 'MyVPG06'
 
VpgName Priority ProtectedSiteName RecoverySiteName VmsCount Status SubStatus ActualRpo UsedStorageInMb LastTest
------- -------- ----------------- ---------------- -------- ------ --------- --------- --------------- --------
MyVPG06 Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
 
 
Description:
    The example above retrieves a single VPG by its unique name. Note that the "-VpgId" parameter can receive either the VPG name, or the VPG identifier GUID (as in Example 2).
.Example
PS C:\>Get-ZvmVpg 'MyVPG06'
 
VpgName Priority ProtectedSiteName RecoverySiteName VmsCount Status SubStatus ActualRpo UsedStorageInMb LastTest
------- -------- ----------------- ---------------- -------- ------ --------- --------- --------------- --------
MyVPG06 Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
 
 
Description:
    The example above retrieves a single VPG by its unique name (like Example 3). Note that since "-VpgId" is a default parameter of this cmdlet, it can be omitted altogether.
.Example
PS C:\>Get-ZvmVpg -SourceSite vSphere-Site03
 
VpgName Priority ProtectedSiteName RecoverySiteName VmsCount Status SubStatus ActualRpo UsedStorageInMb LastTest
------- -------- ----------------- ---------------- -------- ------ --------- --------- --------------- --------
MyVPG06 Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
Exchange Medium vSphere-Site03 vSphere-Site04 MeetingSLA None 7 528384
 
 
Description:
    In the example above the VPG list is filtered by a "SourceSite" column value.
.Example
PS C:\>(Get-ZvmVpg -VpgId 'MyVPG03').Link.Identifier
 
2819e5cd-497e-4649-9575-71cbd4ec7cea
 
 
Description:
    The example above shows how to treat cmdlet output result as object, e.g. to fetch the 'VpgIdentifier' field only.
 
.Outputs
Zerto.Zvm.Models.IVpgApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvpg
#>

function Get-ZvmVpg {
[OutputType([Zerto.Zvm.Models.IVpgApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.Management.Automation.SwitchParameter]
    # Deprecated
    ${BackupEnabled},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The ZORG for this VPG
    ${OrganizationName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The VPG priority.
    # Related endpoint: `/v1/vpgs/priorities`
    ${Priority},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the protected site
    ${ProtectedSiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The protected site type.
    # This filter behaves in the same way as the sourceType filter.
    # Possible values are: `0 or VCVpg` | `2 or VCDvApp | `4 or HyperV`
    ${ProtectedSiteType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the recovery site
    ${RecoverySiteId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The type of the recovery site.
    # This filter behaves in the same way as the targetType filter
    ${RecoverySiteType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the service profile to use for the VPG when a Zerto Cloud Manager is used
    ${ServiceProfileId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See protectedSiteIdentifier
    ${SourceSite},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See protectedSiteType
    ${SourceType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VPG status
    ${Status},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The substatus of the VPG, for example the VPG is in a bitmap sync
    ${SubStatus},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See recoverySiteIdentifier
    ${TargetSite},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Deprecated.
    # See recoverySiteType
    ${TargetType},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VPG name
    ${VpgName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The internal identifier for the ZORG
    ${ZorgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVpg_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmVpg_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get VRA cluster install settings.
(Auth)
.Description
Get VRA cluster install settings.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IVrasOnClusterCreateDataApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvraclustersetting
#>

function Get-ZvmVraClusterSetting {
[OutputType([Zerto.Zvm.Models.IVrasOnClusterCreateDataApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Cluster identifier.
    # Related endpoint `/v1/virtualizationsites/{siteIdentifier}/hostclusters`
    ${ClusterId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVraClusterSetting_Get';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get information about all VRAs.
(Auth)
.Description
Get information about all VRAs.
(Auth)
.Example
PS C:\>Get-ZvmVra
 
VraName VraVersion Status DatastoreClusterName DatastoreName HostDisplayName HostVersion IPAddress NetworkName VraGroup
------- ---------- ------ -------------------- ------------- --------------- ----------- --------- ----------- --------
Z-VRA-10.171.80.74 8.5 Installed inf_QANested0113_DS1 10.171.80.74 6.7 10.171.82.64 VM Network default_group
Z-VRA-10.171.82.173 8.5 Installed DatastoreCluster inf_QANested0113_DS2 10.171.82.173 6.7 10.171.81.174 VM Network default_group
.Example
PS C:\>Get-ZvmVra -DatastoreName "Prod_Datastore"
 
VraName VraVersion Status DatastoreClusterName DatastoreName HostDisplayName HostVersion IPAddress NetworkName VraGroup
------- ---------- ------ -------------------- ------------- --------------- ----------- --------- ----------- --------
VRA-MyHost-0 8.5 Installed Prod_Datastore MyHost-0 6.5 192.168.1.10 Test Network default_group
VRA-MyHost-1 8.5 Installed Prod_Datastore MyHost-1 6.5 192.168.1.11 Test Network default_group
 
.Outputs
Zerto.Zvm.Models.IVraApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/get-zvmvra
#>

function Get-ZvmVra {
[OutputType([Zerto.Zvm.Models.IVraApi])]
[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)]
param(
    [Parameter(ParameterSetName='Get1', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Vra identifier.
    # Related endpoint: `/v1/vras`
    ${VraId},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Cluster name VRA uses for recovery data
    ${DatastoreClusterName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Datastore name VRA uses for recovery data
    ${DatastoreName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # Host version where the VRA is installed
    ${HostVersion},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA IP address
    ${IPAddress},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA network
    ${NetworkName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA status
    ${Status},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA group
    ${VraGroup},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # IP configuration type
    ${VraIPConfigurationTypeApi},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA name
    ${VraName},

    [Parameter(ParameterSetName='Get')]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # VRA version
    ${VraVersion},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'Zerto.Zvm.Commandlets\Get-ZvmVra_Get';
            Get1 = 'Zerto.Zvm.Commandlets\Get-ZvmVra_Get1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
End the Manual Retention process (Auth)
.Description
End the Manual Retention process (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/invoke-zvmabortretention
#>

function Invoke-ZvmAbortRetention {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Abort', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Abort = 'Zerto.Zvm.Commandlets\Invoke-ZvmAbortRetention_Abort';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Commits a restored journal VM.
(Auth)
.Description
Commits a restored journal VM.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
System.String
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/invoke-zvmcommitvm
#>

function Invoke-ZvmCommitVm {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Commit', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${Body},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Commit = 'Zerto.Zvm.Commandlets\Invoke-ZvmCommitVm_Commit';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Get all the relevant points in time for the VM.
VpgId may be required if the VM is protected in more than one VPG.
(Auth)
.Description
Get all the relevant points in time for the VM.
VpgId may be required if the VM is protected in more than one VPG.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
Zerto.Zvm.Models.IPointInTimeApi
.Outputs
Zerto.Zvm.Models.IPointInTimeStatsApi
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/invoke-zvmpoint
#>

function Invoke-ZvmPoint {
[OutputType([Zerto.Zvm.Models.IPointInTimeApi], [Zerto.Zvm.Models.IPointInTimeStatsApi])]
[CmdletBinding(DefaultParameterSetName='Points', PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(ParameterSetName='Points')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval end date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${EndDate},

    [Parameter(ParameterSetName='Points')]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # The filter interval start date-time.
    # Related endpoint: `v1/serverDateTime` for date-time format details
    ${StartDate},

    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Points = 'Zerto.Zvm.Commandlets\Invoke-ZvmPoint_Points';
            Points1 = 'Zerto.Zvm.Commandlets\Invoke-ZvmPoint_Points1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Rolls back a restored journal VM.
(Auth)
.Description
Rolls back a restored journal VM.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
System.String
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/invoke-zvmrollbackvm
#>

function Invoke-ZvmRollbackVm {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Rollback', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${Body},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Rollback = 'Zerto.Zvm.Commandlets\Invoke-ZvmRollbackVm_Rollback';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Check system date time casting from parameters.
Specify the date and check the return value to prove your expectations.
(Auth)
.Description
Check system date time casting from parameters.
Specify the date and check the return value to prove your expectations.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.DateTime
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/invoke-zvmsystemdatetimeservice
#>

function Invoke-ZvmSystemDateTimeService {
[OutputType([System.DateTime])]
[CmdletBinding(DefaultParameterSetName='Post', PositionalBinding=$false)]
param(
    [Parameter()]
    [Zerto.Zvm.Category('Query')]
    [System.DateTime]
    # There are three main ways to specify the date time:
    # In milliseconds | In UTC format | In any other general format (Local time)
    ${DateTime},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Post = 'Zerto.Zvm.Commandlets\Invoke-ZvmSystemDateTimeService_Post';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Create new repository (Auth)
.Description
Create new repository (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IRepositoriesSettingsApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
AZURE <IAzureBackupTargetStorageApi>: .
  [AzureAppId <String>]:
  [AzureAppKey <String>]:
  [AzureCloud <String>]:
  [AzureSa <String>]:
  [AzureTenantId <String>]:
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsArchiveTiering <Boolean?>]:
  [IsCoolTiering <Boolean?>]:
  [IsImmutable <Boolean?>]:
  [Path <String>]:
  [TieringToArchiveInDays <Int32?>]:
  [TieringToCoolInDays <Int32?>]:
 
BODY <IRepositoriesSettingsApi>: .
  [Azure <IAzureBackupTargetStorageApi>]:
    [AzureAppId <String>]:
    [AzureAppKey <String>]:
    [AzureCloud <String>]:
    [AzureSa <String>]:
    [AzureTenantId <String>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsArchiveTiering <Boolean?>]:
    [IsCoolTiering <Boolean?>]:
    [IsImmutable <Boolean?>]:
    [Path <String>]:
    [TieringToArchiveInDays <Int32?>]:
    [TieringToCoolInDays <Int32?>]:
  [Catalyst <ICatalystBackupTargetStorageApi>]:
    [CatalystServer <String>]:
    [CatalystStoreName <String>]:
    [Password <String>]:
    [Path <String>]:
    [Username <String>]:
  [ConnectionType <String>]:
  [DefaultRepository <Boolean?>]:
  [FreeCapacityGb <Int64?>]:
  [IsIndexRepository <Boolean?>]:
  [Nfs <INfsBackupTargetStorageObjectApi>]:
    [Path <String>]:
  [RepositoryIdentifier <String>]:
  [RepositoryName <String>]:
  [RepositoryState <IRepositoryStateApi>]:
    [AllocatedSpaceInGb <Int64?>]:
    [AvailableSpaceInGb <Int64?>]:
    [UsedSpaceInGb <Int64?>]:
  [S3 <IAwss3BackupTargetStorageApi>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsGlacierTiering <Boolean?>]:
    [IsImmutable <Boolean?>]:
    [IsStandardIaTiering <Boolean?>]:
    [Path <String>]:
    [S3AccessKey <String>]:
    [S3BucketName <String>]:
    [S3EndpointUrl <String>]:
    [S3Region <String>]:
    [S3SecretKey <String>]:
    [S3StorageClass <String>]:
    [TieringToGlacierInDays <Int32?>]:
    [TieringToStandardIaInDays <Int32?>]:
  [S3Compatible <IS3CompatibleStorageObjectApi>]:
    [ImmutabilityDays <Int32?>]:
    [ImmutabilityPolicy <String>]:
    [IsImmutable <Boolean?>]:
    [Path <String>]:
    [S3AccessKey <String>]:
    [S3BucketName <String>]:
    [S3EndpointUrl <String>]:
    [S3Region <String>]:
    [S3SecretKey <String>]:
  [Smb <ISmbBackupTargetStorageApi>]:
    [Password <String>]:
    [Path <String>]:
    [UserName <String>]:
  [StorageType <String>]:
  [TotalCapacityGb <Int64?>]:
  [UsedCapacityGb <Int64?>]:
 
CATALYST <ICatalystBackupTargetStorageApi>: .
  [CatalystServer <String>]:
  [CatalystStoreName <String>]:
  [Password <String>]:
  [Path <String>]:
  [Username <String>]:
 
NFS <INfsBackupTargetStorageObjectApi>: .
  [Path <String>]:
 
REPOSITORYSTATE <IRepositoryStateApi>: .
  [AllocatedSpaceInGb <Int64?>]:
  [AvailableSpaceInGb <Int64?>]:
  [UsedSpaceInGb <Int64?>]:
 
S3 <IAwss3BackupTargetStorageApi>: .
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsGlacierTiering <Boolean?>]:
  [IsImmutable <Boolean?>]:
  [IsStandardIaTiering <Boolean?>]:
  [Path <String>]:
  [S3AccessKey <String>]:
  [S3BucketName <String>]:
  [S3EndpointUrl <String>]:
  [S3Region <String>]:
  [S3SecretKey <String>]:
  [S3StorageClass <String>]:
  [TieringToGlacierInDays <Int32?>]:
  [TieringToStandardIaInDays <Int32?>]:
 
S3COMPATIBLE <IS3CompatibleStorageObjectApi>: .
  [ImmutabilityDays <Int32?>]:
  [ImmutabilityPolicy <String>]:
  [IsImmutable <Boolean?>]:
  [Path <String>]:
  [S3AccessKey <String>]:
  [S3BucketName <String>]:
  [S3EndpointUrl <String>]:
  [S3Region <String>]:
  [S3SecretKey <String>]:
 
SMB <ISmbBackupTargetStorageApi>: .
  [Password <String>]:
  [Path <String>]:
  [UserName <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/new-zvmrepository
#>

function New-ZvmRepository {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='NewExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='New', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRepositoriesSettingsApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IAzureBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for AZURE properties and create a hash table.
    ${Azure},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ICatalystBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for CATALYST properties and create a hash table.
    ${Catalyst},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${ConnectionType},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${DefaultRepository},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${FreeCapacityGb},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${IsIndexRepository},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.INfsBackupTargetStorageObjectApi]
    # .
    # To construct, see NOTES section for NFS properties and create a hash table.
    ${Nfs},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RepositoryId},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RepositoryName},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRepositoryStateApi]
    # .
    # To construct, see NOTES section for REPOSITORYSTATE properties and create a hash table.
    ${RepositoryState},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IAwss3BackupTargetStorageApi]
    # .
    # To construct, see NOTES section for S3 properties and create a hash table.
    ${S3},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IS3CompatibleStorageObjectApi]
    # .
    # To construct, see NOTES section for S3COMPATIBLE properties and create a hash table.
    ${S3Compatible},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ISmbBackupTargetStorageApi]
    # .
    # To construct, see NOTES section for SMB properties and create a hash table.
    ${Smb},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${StorageType},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${TotalCapacityGb},

    [Parameter(ParameterSetName='NewExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int64]
    # .
    ${UsedCapacityGb},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            New = 'Zerto.Zvm.Commandlets\New-ZvmRepository_New';
            NewExpanded = 'Zerto.Zvm.Commandlets\New-ZvmRepository_NewExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Delete Retention sets (Auth)
.Description
Delete Retention sets (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IDeleteRetentionSetsApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IDeleteRetentionSetsApi>: .
  [RetentionSetsToDelete <IDeleteRetentionSetInfoApi[]>]:
    [FullRetentionSetIdentifier <String>]:
    [IncrementalRetentionSetsIdentifiers <String[]>]:
 
RETENTIONSETSTODELETE <IDeleteRetentionSetInfoApi[]>: .
  [FullRetentionSetIdentifier <String>]:
  [IncrementalRetentionSetsIdentifiers <String[]>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/remove-zvmltrcatalogretentionset
#>

function Remove-ZvmLtrCatalogRetentionSet {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IDeleteRetentionSetsApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [AllowEmptyCollection()]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IDeleteRetentionSetInfoApi[]]
    # .
    # To construct, see NOTES section for RETENTIONSETSTODELETE properties and create a hash table.
    ${RetentionSetsToDelete},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'Zerto.Zvm.Commandlets\Remove-ZvmLtrCatalogRetentionSet_Delete';
            DeleteExpanded = 'Zerto.Zvm.Commandlets\Remove-ZvmLtrCatalogRetentionSet_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Delete existing repository (Auth)
.Description
Delete existing repository (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/remove-zvmrepository
#>

function Remove-ZvmRepository {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Remove', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # .
    ${RepositoryId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Remove = 'Zerto.Zvm.Commandlets\Remove-ZvmRepository_Remove';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Removes SSL certificate check
.Description
Removes SSL certificate check
.Example
PS C:\>Remove-ZvmSslCheck
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/remove-zvmsslcheck
#>

function Remove-ZvmSslCheck {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Remove', PositionalBinding=$false)]
param()

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Remove = 'Zerto.Zvm.Commandlets\Remove-ZvmSslCheck_Remove';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Delete VPG Scratch settings (Auth)
.Description
Delete VPG Scratch settings (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/remove-zvmvpgsettingscratch
#>

function Remove-ZvmVpgSettingScratch {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Remove', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Vpg Settings Identfifier.
    # Related endpoint: `/v1/vpgSettings`
    ${VpgSettingsId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Remove = 'Zerto.Zvm.Commandlets\Remove-ZvmVpgSettingScratch_Remove';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Starts Journal Vm restore operation.
Returns command task identifier of the operation.
(Auth)
.Description
Starts Journal Vm restore operation.
Returns command task identifier of the operation.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IJournalVMRestoreDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IJournalVMRestoreDataApi>: .
  [CheckpointIdentifier <String>]:
  [CommitPolicy <String>]:
  [JournalVmRestoreSettings <IJournalVMRestoreSettingsDataApi>]:
    [DatastoreIdentifier <String>]:
    [Nics <IJournalVMRestoreNicDataApi[]>]:
      [Hypervisor <IJournalVMRestoreHypervisorSettingsDataApi>]:
        [DnsSuffix <String>]:
        [IPConfig <IJournalVMRestoreIpsettingsDataApi>]:
          [Gateway <String>]:
          [IsDhcp <Boolean?>]:
          [PrimaryDns <String>]:
          [SecondaryDns <String>]:
          [StaticIP <String>]:
          [SubnetMask <String>]:
        [NetworkIdentifier <String>]:
        [ShouldReplaceMacAddress <Boolean?>]:
      [NicIdentifier <String>]:
    [Volumes <IJournalVMRestoreVolumeDataApi[]>]:
      [Datastore <IJournalVMRestoreDatastoreDataApi>]:
        [DatastoreIdentifier <String>]:
        [IsThin <Boolean?>]:
      [VolumeIdentifier <String>]:
  [RestoredVmName <String>]:
  [ShutdownPolicy <String>]:
  [TimeToWaitBeforeContinueInSeconds <Int32?>]:
  [VpgIdentifier <String>]:
 
JOURNALVMRESTORESETTINGS <IJournalVMRestoreSettingsDataApi>: .
  [DatastoreIdentifier <String>]:
  [Nics <IJournalVMRestoreNicDataApi[]>]:
    [Hypervisor <IJournalVMRestoreHypervisorSettingsDataApi>]:
      [DnsSuffix <String>]:
      [IPConfig <IJournalVMRestoreIpsettingsDataApi>]:
        [Gateway <String>]:
        [IsDhcp <Boolean?>]:
        [PrimaryDns <String>]:
        [SecondaryDns <String>]:
        [StaticIP <String>]:
        [SubnetMask <String>]:
      [NetworkIdentifier <String>]:
      [ShouldReplaceMacAddress <Boolean?>]:
    [NicIdentifier <String>]:
  [Volumes <IJournalVMRestoreVolumeDataApi[]>]:
    [Datastore <IJournalVMRestoreDatastoreDataApi>]:
      [DatastoreIdentifier <String>]:
      [IsThin <Boolean?>]:
    [VolumeIdentifier <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/restore-zvmvm
#>

function Restore-ZvmVm {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='RestoreExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VM.
    # Related endpoint: `v1/vms`
    ${VmId},

    [Parameter(ParameterSetName='Restore', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IJournalVMRestoreDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CheckpointId},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CommitPolicy},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IJournalVMRestoreSettingsDataApi]
    # .
    # To construct, see NOTES section for JOURNALVMRESTORESETTINGS properties and create a hash table.
    ${JournalVmRestoreSettings},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RestoredVmName},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${ShutdownPolicy},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int32]
    # .
    ${TimeToWaitBeforeContinueInSeconds},

    [Parameter(ParameterSetName='RestoreExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Restore = 'Zerto.Zvm.Commandlets\Restore-ZvmVm_Restore';
            RestoreExpanded = 'Zerto.Zvm.Commandlets\Restore-ZvmVm_RestoreExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Add a new license or update an existing one.
(Auth)
.Description
Add a new license or update an existing one.
(Auth)
.Example
PS C:\>Set-ZvmLicense -LicenseKey 5FBD8JZ1JBFGHTX6LKNZC89YHTS5SGLTUKZ
.Example
PS C:\>Set-ZvmLicense -LicenseKey InvalidLicenceKey
 
Set-ZvmLicense_SetExpanded: Exception occurred in API: Invalid License Key
 
.Inputs
Zerto.Zvm.Models.ILicenseKeyApi
.Outputs
System.Boolean
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <ILicenseKeyApi>: .
  [LicenseKey <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/set-zvmlicense
#>

function Set-ZvmLicense {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='SetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Set', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ILicenseKeyApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='SetExpanded', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${LicenseKey},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Set = 'Zerto.Zvm.Commandlets\Set-ZvmLicense_Set';
            SetExpanded = 'Zerto.Zvm.Commandlets\Set-ZvmLicense_SetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
UnInstall VRAs from cluster.
Returns TaskIdentifier (Auth)
.Description
UnInstall VRAs from cluster.
Returns TaskIdentifier (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmclustervrauninstall
#>

function Start-ZvmClusterVraUninstall {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Cluster identifier.
    # Related endpoint `/v1/virtualizationsites/{siteIdentifier}/hostclusters`
    ${ClusterId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmClusterVraUninstall_Start';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Upgrade VRA on cluster.
Returns TaskIdentifier (Auth)
.Description
Upgrade VRA on cluster.
Returns TaskIdentifier (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmclustervraupgrade
#>

function Start-ZvmClusterVraUpgrade {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Cluster identifier.
    # Related endpoint `/v1/virtualizationsites/{siteIdentifier}/hostclusters`
    ${ClusterId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmClusterVraUpgrade_Start';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Restore the VM from the Repository at the recovery site.
Returns a token.
(Auth)
.Description
Restore the VM from the Repository at the recovery site.
Returns a token.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IRestoreVMApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IRestoreVMApi>: .
  [DatastoreIdentifier <String>]:
  [HostIdentifier <String>]:
  [LtrVmIdentifier <String>]:
  [RetentionSetIdentifier <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmltrrestorevm
#>

function Start-ZvmLtrRestoreVm {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRestoreVMApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${DatastoreId},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${HostId},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${LtrVmId},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${RetentionSetId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmLtrRestoreVm_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmLtrRestoreVm_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Add a peer site (start pairing).
(Auth)
.Description
Add a peer site (start pairing).
(Auth)
Note:
    Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmPair -Host MyHost01.company.com -Port 7071 -Token NIjkLnTa5OtTJ0CHWfkSsMGch/6wvNQ4ddBIHZDLYhqGlJY0z/FI8wmup+c=
 
e89e43b3-4fb5-43f0-a0fa-3ec4b4d87d18.587cfbb5-c22c-4880-995f-df5eb2ddc737
 
 
Description:
    To obtain pairing token, execute 'Get-ZvmPairingToken' for another host
 
.Inputs
Zerto.Zvm.Models.IPairDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IPairDataApi>: .
  [HostName <String>]:
  [Port <Int32?>]:
  [Token <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmpair
#>

function Start-ZvmPair {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IPairDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded', Position=0, Mandatory)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${HostName},

    [Parameter(ParameterSetName='StartExpanded', Position=1, Mandatory)]
    [Zerto.Zvm.Category('Body')]
    [System.Int32]
    # .
    ${Port},

    [Parameter(ParameterSetName='StartExpanded', Position=2, Mandatory)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${Token},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmPair_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmPair_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Start the Manual Retention process (Auth)
.Description
Start the Manual Retention process (Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IRetentionStartInfoApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IRetentionStartInfoApi>: .
  [CheckpointId <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmretention
#>

function Start-ZvmRetention {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # The identifier of the VPG.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IRetentionStartInfoApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CheckpointId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmRetention_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmRetention_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Store VRA install settings for a cluster.
(Auth)
.Description
Store VRA install settings for a cluster.
(Auth)
.Example
{{ Add code here }}
.Example
{{ Add code here }}
 
.Inputs
Zerto.Zvm.Models.IVrasOnClusterCreateDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IVrasOnClusterCreateDataApi>: .
  [AutoPopulatePostInstalltion <Boolean?>]:
  [ClusterIdentifier <String>]:
  [DatastoreIdentifier <String>]:
  [GroupName <String>]:
  [HostRootPassword <String>]:
  [MemoryInGb <Int32?>]:
  [NetworkIdentifier <String>]:
  [NumOfCpus <Int32?>]:
  [UsePublicKeyInsteadOfCredentials <Boolean?>]:
  [VraNetworkDataApi <IVraNetworkDataApi>]:
    [DefaultGateway <String>]:
    [SubnetMask <String>]:
    [VraIPAddress <String>]:
    [VraIPAddressRangeEnd <String>]:
    [VraIPConfigurationTypeApi <String>]:
 
VRANETWORKDATAAPI <IVraNetworkDataApi>: .
  [DefaultGateway <String>]:
  [SubnetMask <String>]:
  [VraIPAddress <String>]:
  [VraIPAddressRangeEnd <String>]:
  [VraIPConfigurationTypeApi <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmsetvraclustersetting
#>

function Start-ZvmSetVraClusterSetting {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Cluster identifier.
    # Related endpoint `/v1/virtualizationsites/{siteIdentifier}/hostclusters`
    ${ClusterId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVrasOnClusterCreateDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${AutoPopulatePostInstalltion},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${ClusterIdentifier1},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${DatastoreId},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${GroupName},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${HostRootPassword},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int32]
    # .
    ${MemoryInGb},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${NetworkId},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Int32]
    # .
    ${NumOfCpus},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${UsePublicKeyInsteadOfCredentials},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVraNetworkDataApi]
    # .
    # To construct, see NOTES section for VRANETWORKDATAAPI properties and create a hash table.
    ${VraNetworkDataApi},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmSetVraClusterSetting_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmSetVraClusterSetting_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Clone a VPG using a specific checkpoint or the latest checkpoint if one is not (Auth)
.Description
Clone a VPG using a specific checkpoint or the latest checkpoint if one is not (Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgClone vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.ICloneStartDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <ICloneStartDataApi>: .
  [CheckpointId <String>]:
  [DatastoreIdentifier <String>]:
  [VmIdentifiers <String[]>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgclone
#>

function Start-ZvmVpgClone {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.ICloneStartDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded', Position=1)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CheckpointId},

    [Parameter(ParameterSetName='StartExpanded', Position=2)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${DatastoreId},

    [Parameter(ParameterSetName='StartExpanded')]
    [AllowEmptyCollection()]
    [Zerto.Zvm.Category('Body')]
    [System.String[]]
    # .
    ${VmIdentifiers},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgClone_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmVpgClone_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Delete the VPG (Auth)
.Description
Delete the VPG (Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgDelete “vpga name_1”
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.IVpgDeleteDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IVpgDeleteDataApi>: .
  [Force <Boolean?>]:
  [KeepRecoveryVolumes <Boolean?>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgdelete
#>

function Start-ZvmVpgDelete {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVpgDeleteDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${Force},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${KeepRecoveryVolumes},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgDelete_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmVpgDelete_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Start a failover test using a specific checkpoint or the latest checkpoint if one is not .
(Auth)
.Description
Start a failover test using a specific checkpoint or the latest checkpoint if one is not .
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgFailoverTest vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.IFailOverTestStartDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IFailOverTestStartDataApi>: .
  [CheckpointIdentifier <String>]:
  [VmIdentifiers <String[]>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgfailovertest
#>

function Start-ZvmVpgFailoverTest {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IFailOverTestStartDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CheckpointId},

    [Parameter(ParameterSetName='StartExpanded')]
    [AllowEmptyCollection()]
    [Zerto.Zvm.Category('Body')]
    [System.String[]]
    # .
    ${VmIdentifiers},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgFailoverTest_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmVpgFailoverTest_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Force synchronization of the VPG.
(Auth)
.Description
Force synchronization of the VPG.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgForceSync vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgforcesync
#>

function Start-ZvmVpgForceSync {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgForceSync_Start';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Pause the protection of the VPG.
(Auth)
.Description
Pause the protection of the VPG.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgPause vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgpause
#>

function Start-ZvmVpgPause {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgPause_Start';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Resume the protection of the VPG.
(Auth)
.Description
Resume the protection of the VPG.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgResume vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Outputs
System.String
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgresume
#>

function Start-ZvmVpgResume {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgResume_Start';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Create a tagged checkpoint for the VPG.
(Auth)
.Description
Create a tagged checkpoint for the VPG.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVpgTaggedCheckpointInsert vpganame_1 -Body $vpgInsertTagCheckpointData
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.IVpgInsertTagCheckpointDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IVpgInsertTagCheckpointDataApi>: .
  [CheckpointName <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvpgtaggedcheckpointinsert
#>

function Start-ZvmVpgTaggedCheckpointInsert {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StartExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVpgInsertTagCheckpointDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded', Position=1)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${CheckpointName},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVpgTaggedCheckpointInsert_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmVpgTaggedCheckpointInsert_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Change recovery host.
(Auth)
.Description
Change recovery host.
(Auth)
Note:
    Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Start-ZvmVraChangeRecoveryHost someVra -Body $vraChangeRecoveryHostSettings
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.IVraChangeRecoveryHostSettingsApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IVraChangeRecoveryHostSettingsApi>: .
  [VmsAllocations <IVraVMAllocationApi[]>]:
    [HostIdentifier <String>]:
    [VmIdentifier <String>]:
 
VMSALLOCATIONS <IVraVMAllocationApi[]>: .
  [HostIdentifier <String>]:
  [VmIdentifier <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/start-zvmvrachangerecoveryhost
#>

function Start-ZvmVraChangeRecoveryHost {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='Start', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # Vra identifier.
    # Related endpoint: `/v1/vras`
    ${VraId},

    [Parameter(ParameterSetName='Start', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVraChangeRecoveryHostSettingsApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StartExpanded', Position=1, Mandatory)]
    [AllowEmptyCollection()]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IVraVMAllocationApi[]]
    # .
    # To construct, see NOTES section for VMSALLOCATIONS properties and create a hash table.
    ${VmsAllocations},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Start = 'Zerto.Zvm.Commandlets\Start-ZvmVraChangeRecoveryHost_Start';
            StartExpanded = 'Zerto.Zvm.Commandlets\Start-ZvmVraChangeRecoveryHost_StartExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Abort cloning of the VPG (Auth)
.Description
Abort cloning of the VPG (Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Stop-ZvmVpgClone vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Outputs
System.Boolean
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/stop-zvmvpgclone
#>

function Stop-ZvmVpgClone {
[OutputType([System.Boolean])]
[CmdletBinding(DefaultParameterSetName='Stop', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Returns true when the command succeeds
    ${PassThru},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Stop = 'Zerto.Zvm.Commandlets\Stop-ZvmVpgClone_Stop';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Stops a failover test.
Specify if test was successful and provide a summary.
(Auth)
.Description
Stops a failover test.
Specify if test was successful and provide a summary.
(Auth)
Note:
    Parameter 'VpgId' accepts VPG name as well as VPG GUID
Commandlet returns TaskId. Execute 'Get-ZvmTask TaskId' to get more info about running task
.Example
PS C:\>Stop-ZvmVpgFailoverTest vpganame_1
 
db1075a6-94a4-4c15-9123-44107d6bb261.a728fb12-2c12-4c9c-872d-47c815fa2b70
 
.Inputs
Zerto.Zvm.Models.IStopFailoverTestDataApi
.Outputs
System.String
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BODY <IStopFailoverTestDataApi>: .
  [FailoverTestSuccess <Boolean?>]:
  [FailoverTestSummary <String>]:
.Link
https://docs.microsoft.com/en-us/powershell/module/zerto.zvm.commandlets/stop-zvmvpgfailovertest
#>

function Stop-ZvmVpgFailoverTest {
[OutputType([System.String])]
[CmdletBinding(DefaultParameterSetName='StopExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(Position=0, Mandatory)]
    [Zerto.Zvm.Category('Path')]
    [System.String]
    # VPG identifier.
    # Related endpoint: `v1/vpgs`
    ${VpgId},

    [Parameter(ParameterSetName='Stop', Mandatory, ValueFromPipeline)]
    [Zerto.Zvm.Category('Body')]
    [Zerto.Zvm.Models.IStopFailoverTestDataApi]
    # .
    # To construct, see NOTES section for BODY properties and create a hash table.
    ${Body},

    [Parameter(ParameterSetName='StopExpanded')]
    [Zerto.Zvm.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # .
    ${FailoverTestSuccess},

    [Parameter(ParameterSetName='StopExpanded', Position=1)]
    [Zerto.Zvm.Category('Body')]
    [System.String]
    # .
    ${FailoverTestSummary},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [Zerto.Zvm.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Zerto.Zvm.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Stop = 'Zerto.Zvm.Commandlets\Stop-ZvmVpgFailoverTest_Stop';
            StopExpanded = 'Zerto.Zvm.Commandlets\Stop-ZvmVpgFailoverTest_StopExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [Zerto.Zvm.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}