exports/Remove-SysManClient.ps1

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

function Remove-SysManClient {
[OutputType('System.Boolean')]
[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Deletes clients from SysMan. Will also create an action with type ''DELTARGET'' that can be used by external systems\r\nto clean up the client')]
param(
    [Parameter(ParameterSetName='Delete', ValueFromPipeline, HelpMessage='The required information to remove a client (target)')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IDeleteClientV2Command]
    ${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 client should be deleted in Active Directory or not')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DeleteInAd},

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

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

    [Parameter(ParameterSetName='DeleteExpanded', HelpMessage='If the client should be disabled in Active Directory or not. Cannot be true if DeleteInAd is true.')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DisableInAd},

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

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory, HelpMessage='The ids of the client 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-SysManClient_Delete';
            DeleteExpanded = 'SysMan.WebApi.private\Remove-SysManClient_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
    }
}
}