exports/Update-SysManDeploymentTemplate.ps1

<#
.Synopsis
Partially updates an existing Deployment Template. 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 Deployment Template. 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-sysmandeploymenttemplate
#>

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

    [Parameter(ParameterSetName='Patch', ValueFromPipeline, HelpMessage='Partially update a deployment template')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IBodyParameterDeploymentTemplatePatchRequestBody]
    ${Cmd},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the user can change the installation type')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${CanChangeInstallationType},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the user can change operating system')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${CanChangeOperatingSystem},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The SIDs of the groups that the deployed computer will be added to')]
    [SysMan.Powershell.Category('Body')]
    [System.String[]]
    ${Groups},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='If the template should be marked as the default template')]
    [SysMan.Powershell.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${IsDefault},

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

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The operating system')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64]
    ${OperatingSystemId},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The printer installatios that will be used when deploying the computer')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IPrinterInstallation[]]
    ${Printers},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The roles that will be used when deploying the computer')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IDeploymentRoleConfiguration[]]
    ${Roles},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The id of the systems that will be installed during the deployment')]
    [SysMan.Powershell.Category('Body')]
    [System.Int64[]]
    ${Systems},

    [Parameter(ParameterSetName='PatchExpanded', HelpMessage='The variable state to save to the deployment template (the variable list will be saved as is, any existing variables that are not part of the list will be removed)')]
    [SysMan.Powershell.Category('Body')]
    [SysMan.Powershell.Models.IDeploymentTemplateVariable[]]
    ${Variables},

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