functions/discovery/Set-TssDiscoveryDependencyTemplate.ps1

function Set-TssDiscoveryDependencyTemplate {
    <#
    .SYNOPSIS
    Update a Discovery dependency template
 
    .DESCRIPTION
    Updates the given fields of a Discovery dependency template and returns the updated template. Fields not given are unchanged. Built-in templates cannot be changed (the server returns an error; CanEdit is false on them).
 
    .PARAMETER TssSession
    TssSession object created by New-TssSession for authentication
 
    .PARAMETER Id
    Dependency template id
 
    .PARAMETER Active
    Activate the template; use -Active:$false to deactivate it
 
    .PARAMETER ScanItemTemplateId
    Scan template the dependency template uses
 
    .PARAMETER SecretDependencyChangerId
    Dependency changer the template uses
 
    .PARAMETER SecretDependencyTemplateDescription
    Template description
 
    .PARAMETER SecretDependencyTemplateName
    Template name
 
    .PARAMETER SecretDependencyTypeId
    Dependency type id
 
    .EXAMPLE
    $session = New-TssSession -SecretServer https://alpha -Credential $ssCred
    Set-TssDiscoveryDependencyTemplate -TssSession $session -Id 12 -SecretDependencyTemplateDescription 'App pools on the web farm'
 
    Change the description of dependency template 12
 
    .EXAMPLE
    $session = New-TssSession -SecretServer https://alpha -Credential $ssCred
    Set-TssDiscoveryDependencyTemplate -TssSession $session -Id 12 -Active:$false
 
    Deactivate dependency template 12
 
    .LINK
    https://thycotic-ps.github.io/thycotic.secretserver/commands/discovery/Set-TssDiscoveryDependencyTemplate
 
    .LINK
    https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/discovery/Set-TssDiscoveryDependencyTemplate.ps1
 
    .NOTES
    Requires TssSession object returned by New-TssSession
    #>

    [CmdletBinding(SupportsShouldProcess)]
    [OutputType('Thycotic.PowerShell.Discovery.DependencyTemplate')]
    param (
        [Parameter(Mandatory, ValueFromPipeline, Position = 0)]
        [Thycotic.PowerShell.Authentication.Session]
        $TssSession,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [Alias('SecretDependencyTemplateId')]
        [int]
        $Id,

        [switch]
        $Active,

        [int]
        $ScanItemTemplateId,

        [int]
        $SecretDependencyChangerId,

        [string]
        $SecretDependencyTemplateDescription,

        [string]
        $SecretDependencyTemplateName,

        [int]
        $SecretDependencyTypeId
    )
    begin {
        $tssParams = $PSBoundParameters
        $invokeParams = . $GetInvokeApiParams $TssSession
    }
    process {
        Get-TssInvocation $PSCmdlet.MyInvocation
        if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) {
            Compare-TssVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation
            $uri = $TssSession.ApiUrl, 'discovery', 'scanners', 'dependency-template', $Id -join '/'
            $invokeParams.Uri = $uri
            $invokeParams.Method = 'PATCH'
            $body = @{ data = @{ } }
            switch ($tssParams.Keys) {
                'Active' {
                    $body.data.Add('active', @{ dirty = $true; value = [boolean]$Active })
                }
                'ScanItemTemplateId' {
                    $body.data.Add('scanItemTemplateId', @{ dirty = $true; value = $ScanItemTemplateId })
                }
                'SecretDependencyChangerId' {
                    $body.data.Add('secretDependencyChangerId', @{ dirty = $true; value = $SecretDependencyChangerId })
                }
                'SecretDependencyTemplateDescription' {
                    $body.data.Add('secretDependencyTemplateDescription', @{ dirty = $true; value = $SecretDependencyTemplateDescription })
                }
                'SecretDependencyTemplateName' {
                    $body.data.Add('secretDependencyTemplateName', @{ dirty = $true; value = $SecretDependencyTemplateName })
                }
                'SecretDependencyTypeId' {
                    $body.data.Add('secretDependencyTypeId', @{ dirty = $true; value = $SecretDependencyTypeId })
                }
            }
            $invokeParams.Body = $body | ConvertTo-Json -Depth 100
            if ($PSCmdlet.ShouldProcess("Discovery dependency template: $Id", "$($invokeParams.Method) $uri with:`n$($invokeParams.Body)`n")) {
                Write-Verbose "Performing the operation $($invokeParams.Method) $uri with:`n$($invokeParams.Body)`n"
                try {
                    $apiResponse = Invoke-TssApi @invokeParams
                    $restResponse = . $ProcessResponse $apiResponse
                } catch {
                    Write-Warning 'Issue with Set-TssDiscoveryDependencyTemplate request'
                    $err = $_
                    . $ErrorHandling $err
                }
                if ($restResponse) {
                    [Thycotic.PowerShell.Discovery.DependencyTemplate](. $FilterTssResponse $restResponse ([Thycotic.PowerShell.Discovery.DependencyTemplate]))
                }
            }
        } else {
            Write-Warning 'No valid session found'
        }
    }
}