exports/Invoke-SysManDiscontinueApplication.ps1

<#
.Synopsis
Discontinues the provided application. Can be configured to uninstall any installed instance of the application on clients.
.Description
Discontinues the provided application. Can be configured to uninstall any installed instance of the application on clients.
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/invoke-sysmandiscontinueapplication
#>

function Invoke-SysManDiscontinueApplication {
[OutputType('SysMan.Powershell.Models.IApplication', 'SysMan.Powershell.Models.IApiErrorMessage')]
[CmdletBinding(DefaultParameterSetName='Discontinue', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Discontinues the provided application. Can be configured to uninstall any installed instance of the application on clients.')]
param(
    [Parameter(Mandatory, HelpMessage='The id of the application')]
    [SysMan.Powershell.Category('Path')]
    [System.Int64]
    ${Id},

    [Parameter(ParameterSetName='Discontinue', ValueFromPipeline, HelpMessage='Discontinues the application')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IDiscontinueApplicationV2Command]
    ${Cmd},

    [Parameter(ParameterSetName='DiscontinueExpanded', HelpMessage='If the application should be uninstalled on all clients that has this application installed')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${UninstallOnClients},

    [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 = @{
            Discontinue = 'SysMan.WebApi.private\Invoke-SysManDiscontinueApplication_Discontinue';
            DiscontinueExpanded = 'SysMan.WebApi.private\Invoke-SysManDiscontinueApplication_DiscontinueExpanded';
        }
        $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
    }
}
}