exports/Update-SysManOperatingSystem.ps1

<#
.Synopsis
Partially updates an existing Operating system. 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 Operating system. 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-sysmanoperatingsystem
#>

function Update-SysManOperatingSystem {
[OutputType('SysMan.Powershell.Models.IOperatingSystem', 'SysMan.Powershell.Models.IApiErrorMessage')]
[CmdletBinding(DefaultParameterSetName='Patch', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[SysMan.Powershell.Description('Partially updates an existing Operating system. 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 Operating system')]
    [SysMan.Powershell.Category('Path')]
    [System.Int64]
    ${Id},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The advertisementId is used to distinguished which of the Task sequences that should be used on the specifiedcollection (based on the collectionId).')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${AdvertisementId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The collection the client that is installing this operating system will be placed in')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${CollectionId},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The edition of the image')]
    [SysMan.Powershell.Category('Body')]
    [System.Int32]
    ${ImageIndex},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the provided operating system is a template operating system. A template operating system cannot be installedand exists only to provide a way to inherit configuration down to the child operating systems (example: Driver configuration, Hardware Model etc.).')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${IsTemplate},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the operating system is in test. Defaults to false when creating an operating system. During an update and if null the value will be ignored (old value preserved).')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${IsTest},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The parent operating system (template) that this operating system belongs to.')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${ParentOperatingSystemId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The type of operating system')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${Type},

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

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The collectionId clients should be put in when upgrading (in place upgrade) to another Operating System')]
    [SysMan.Powershell.Category('Body')]
    [System.String]
    ${UpgradeCollectionId},

    [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-SysManOperatingSystem_Patch';
            PatchExpanded = 'SysMan.WebApi.private\Update-SysManOperatingSystem_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
    }
}
}