CoreOps/Replication/Suspend-SDPReplicationSession.ps1

function Suspend-SDPReplicationSession {
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='High')]
    param(
        [parameter(Mandatory,ValueFromPipelineByPropertyName)]
        [Alias('pipeName')]
        [string] $name,
        [parameter()]
        [switch] $wait,
        [parameter()]
        [switch] $Force,
        [parameter()]
        [string] $context = 'sdpconnection'
    )

    begin {
        $endpoint = 'replication/sessions'
    }

    process {
        $session = Get-SDPReplicationSessions -name $name -context $context
        if ($session) {
            if ($session.state -ne 'in_sync') {
                $errormsg = 'Please ensure replication session is currently "in_sync"'
                return $errormsg | Write-Error
            }

            if ($Force -and -not $PSBoundParameters.ContainsKey('Confirm')) {
                $ConfirmPreference = 'None'
            }
            if ($PSCmdlet.ShouldProcess("SDPReplicationSession name=$name", 'Suspend')) {
                $o = New-Object psobject
                $o | Add-Member -MemberType NoteProperty -Name "state" -Value 'suspended'

                $body = $o
                $subendpoint = $endpoint + '/' + $session.id

                try {
                    $results = Invoke-SDPRestCall -endpoint $subendpoint -method PATCH -body $body -context $context
                } catch {
                    return $Error[0]
                }
                if ($wait) {
                    while ($session.state -ne 'suspended') {
                        $session = Get-SDPReplicationSessions -name $name -context $context
                        Start-Sleep -Seconds 2
                    }
                }
                $results = Get-SDPReplicationSessions -name $name -context $context
                return $results
            }
        }
    }
}