exports/Update-SysManClient.ps1

<#
.Synopsis
Partially updates an existing Client. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.
.Description
Partially updates an existing Client. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.
.Link
https://docs.microsoft.com/en-us/powershell/module/sysman.webapi/update-sysmanclient
#>

function Update-SysManClient {
[OutputType('SysMan.Powershell.Models.IClient', 'SysMan.Powershell.Models.IApiErrorMessage')]
[CmdletBinding(DefaultParameterSetName='Patch', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Partially updates an existing Client. Does not require all attributes to be set. Note that only attribute not present in the payload will be ignored. Note: Attributes with null values will be treated as attribute assignments.')]
param(
    [Parameter(Mandatory, HelpMessage='The id of the client')]
    [SysMan.Powershell.Category('Path')]
    [System.Int64]
    ${Id},

    [Parameter(ParameterSetName='Patch', ValueFromPipeline, HelpMessage='Patchs an existing client')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IBodyParameterClientPatchRequestBody]
    ${Cmd},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The asset tag of the client')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${AssetTag},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The computer description')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Description},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='GeneralMessage')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${GeneralMessage},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The model the current computer is')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${HardwareModelId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='Has GeneralMessage')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${HasGeneralMessage},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the client is a ''Medicinteknisk utrusting''')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${IsMt},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The Mac')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Mac},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the client is actually owned by some other external system. This will prevent the computer from being deleted through the SysMan UI.Note: The computer will still be able to be deleted through this API.')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${OwnedByExternalSystem},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The primary users to add to the client. The list should contain the userName of the users to add. The PrimaryUsers information is owned by SCCM (therefor the userName instead of targetId).')]
    [SysMan.Powershell.Category('Body')]
    [System.String[]]
    ${PrimaryUsersToAdd},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The primary users to remove from the client. The list should contain the userName of the users to remove. The PrimaryUsers information is owned by SCCM (therefor the userName instead of targetId).')]
    [SysMan.Powershell.Category('Body')]
    [System.String[]]
    ${PrimaryUsersToRemove},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The serial of the client')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Serial},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='Where the client was imported from (Example: SysManService)')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Source},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The Uuid')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Uuid},

    [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 = @{
            Patch = 'SysMan.WebApi.private\Update-SysManClient_Patch';
            PatchExpanded = 'SysMan.WebApi.private\Update-SysManClient_PatchExpanded';
        }
        $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
    }
}
}