exports/New-SysManClientBatch.ps1

<#
.Synopsis
Creates new clients. Each client will be created according to the provided commands in the Batch property.\r\nIf any of the client fails to be created the whole batch will fail and no changes will be made to SysMan or external systems.
.Description
Creates new clients. Each client will be created according to the provided commands in the Batch property.\r\nIf any of the client fails to be created the whole batch will fail and no changes will be made to SysMan or external systems.
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/new-sysmanclientbatch
#>

function New-SysManClientBatch {
[OutputType('SysMan.Powershell.Models.IClient', 'SysMan.Powershell.Models.IApiErrorMessage')]
[CmdletBinding(DefaultParameterSetName='Create', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Creates new clients. Each client will be created according to the provided commands in the Batch property.\r\nIf any of the client fails to be created the whole batch will fail and no changes will be made to SysMan or external systems.')]
param(
    [Parameter(ParameterSetName='Create', ValueFromPipeline, HelpMessage='Creates new clients')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.ICreateNewClientBatchCommand]
    ${Cmd},

    [Parameter(ParameterSetName='CreateExpanded', HelpMessage='Each of the target source mapping contained in this batch')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.ICreateNewClientCommand[]]
    ${Batch},

    [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 = @{
            Create = 'SysMan.WebApi.private\New-SysManClientBatch_Create';
            CreateExpanded = 'SysMan.WebApi.private\New-SysManClientBatch_CreateExpanded';
        }
        $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
    }
}
}