exports/Remove-SysManUser.ps1

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

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

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

    [Parameter(ParameterSetName='DeleteExpanded', HelpMessage='If the user 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 user should be inactivated in SysMan')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${DisableInSysMan},

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