exports/Remove-SysManMobileDevice.ps1

<#
.Synopsis
Deletes mobile devices from SysMan. Will also create an action with type 'DELTARGET' that can be used by external systems\r\nto clean up the mobile device
.Description
Deletes mobile devices from SysMan. Will also create an action with type 'DELTARGET' that can be used by external systems\r\nto clean up the mobile device
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/remove-sysmanmobiledevice
#>

function Remove-SysManMobileDevice {
[OutputType('System.Boolean')]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Deletes mobile devices from SysMan. Will also create an action with type ''DELTARGET'' that can be used by external systems\r\nto clean up the mobile device')]
param(
    [Parameter(ParameterSetName='Delete', ValueFromPipeline, HelpMessage='The required information to remove a mobile device (target)')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IDeleteMobileDeviceV2Command]
    ${Cmd},

    [Parameter(HelpMessage='When specified, PassThru will force the cmdlet return a ''bool'' given that there isn''t a return type by default.')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${PassThru},

    [Parameter(ParameterSetName='DeleteExpanded', HelpMessage='If the mobile devices should be deletd in the external system (SCCM or Intune)')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DeleteInExternal},

    [Parameter(ParameterSetName='DeleteExpanded', HelpMessage='If the mobile devices should be deleted in SysMan')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DeleteInSysman},

    [Parameter(ParameterSetName='DeleteExpanded', HelpMessage='If the mobile device should be inactivated in SysMan')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DisableInSysMan},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory, HelpMessage='The ids of the mobile device to remove (in SysMan)')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64[]]
    ${Targets},

    [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 = @{
            Delete = 'SysMan.WebApi.private\Remove-SysManMobileDevice_Delete';
            DeleteExpanded = 'SysMan.WebApi.private\Remove-SysManMobileDevice_DeleteExpanded';
        }
        $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
    }
}
}