exports/Update-SysManMigration.ps1

<#
.Synopsis
Partially updates an existing Migration. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.
.Description
Partially updates an existing Migration. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/update-sysmanmigration
#>

function Update-SysManMigration {
[OutputType('SysMan.Powershell.Models.IMigration', 'SysMan.Powershell.Models.IApiErrorMessage')]
[CmdletBinding(DefaultParameterSetName='Patch', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Partially updates an existing Migration. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.')]
param(
    [Parameter(Mandatory, HelpMessage='The id of the Migration')]
    [SysMan.Powershell.Category('Path')]
    [System.Int64]
    ${Id},

    [Parameter(ParameterSetName='Patch', ValueFromPipeline, HelpMessage='Patchs a existing migration')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IBodyParameterMigrationPatchRequestBody]
    ${Cmd},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The batches of this migration. Should be the desired states of all the batches.If a batch is missing compare to server sate it will be deleted. If a new one is found, it will be created.')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IMigrationBatch[]]
    ${Batches},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The description of the migration')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Description},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The date the migration should end')]
    [SysMan.Powershell.Category('Body')]
    [System.DateTime]
    ${EndDate},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the migration should be treated as an upgrade. An upgrade will not uninstall the old applicationduring a migration.')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${IsUpgrade},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The name of the migration')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Name},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='Source application')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${SourceApplicationId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The date the migration should start')]
    [SysMan.Powershell.Category('Body')]
    [System.DateTime]
    ${StartDate},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The target application')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${TargetApplicationId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The target system')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${TargetSystemId},

    [Parameter(DontShow, HelpMessage='Wait for .NET debugger to attach')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    ${Break},

    [Parameter(DontShow, HelpMessage='SendAsync Pipeline Steps to be appended to the front of the pipeline')]
    [ValidateNotNull()]
    [SysMan.Powershell.Category('Runtime')]
    [SysMan.Powershell.Runtime.SendAsyncStep[]]
    ${HttpPipelineAppend},

    [Parameter(DontShow, HelpMessage='SendAsync Pipeline Steps to be prepended to the front of the pipeline')]
    [ValidateNotNull()]
    [SysMan.Powershell.Category('Runtime')]
    [SysMan.Powershell.Runtime.SendAsyncStep[]]
    ${HttpPipelinePrepend},

    [Parameter(DontShow, HelpMessage='The URI for the proxy server to use')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Uri]
    ${Proxy},

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

    [Parameter(DontShow, HelpMessage='Use the default credentials for the proxy')]
    [SysMan.Powershell.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PsCmdlet.ParameterSetName
        $mapping = @{
            Patch = 'SysMan.WebApi.private\Update-SysManMigration_Patch';
            PatchExpanded = 'SysMan.WebApi.private\Update-SysManMigration_PatchExpanded';
        }
        $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
    }
}
}