Update-QlikEngine.ps1

function Update-QlikEngine {
    <#
    .SYNOPSIS
    This function ...
 
    .DESCRIPTION
    A bit more description
 
    .PARAMETER FromPipeline
    Shows how to process input from the pipeline, remaining parameters or by named parameter.
 
    .EXAMPLE
    Update-QlikEngine 'abc'
 
    Description of the example.
 
    #>


    <# Enable -Confirm and -WhatIf. #>
    [CmdletBinding(SupportsShouldProcess = $true)]
    param(
    [parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True,Position=0)]
    [string]$id,

    [ValidateSet("IgnoreMaxLimit", "SoftMaxLimit", "HardMaxLimit")]
    [string]$workingSetSizeMode,

    [ValidateRange(0,100)]
    [Int]$workingSetSizeLoPct,

    [ValidateRange(0,100)]
    [Int]$workingSetSizeHiPct,

    [ValidateRange(0,100)]
    [Int]$cpuThrottlePercentage,

    [Bool]$AllowDataLineage,
    [Bool]$StandardReload,
    [string]$documentDirectory,
    [Int]$documentTimeout,
    [int]$autosaveInterval,
    [int]$genericUndoBufferMaxSize
    )

    begin {
    }

    process  {
    $engine = Get-QlikEngine -Id $id -raw
    Write-Verbose $workingSetSizeMode
    if( $workingSetSizeMode ) {
        switch ($workingSetSizeMode) {
            IgnoreMaxLimit { $sizeMode = 0 }
            SoftMaxLimit { $sizeMode = 1 }
            HardMaxLimit { $sizeMode = 2 }
        }
        $engine.settings.workingSetSizeMode = $sizeMode
    }
    if($workingSetSizeLoPct) {
        $engine.settings.workingSetSizeLoPct = $workingSetSizeLoPct
    }
    if($workingSetSizeHiPct) {
        $engine.settings.workingSetSizeHiPct = $workingSetSizeHiPct
    }
    if($cpuThrottlePercentage) {
        $engine.settings.cpuThrottlePercentage = $cpuThrottlePercentage
    }
    if($documentDirectory) {
        $engine.settings.documentDirectory = $documentDirectory
    }
    if($AllowDataLineage) {
      $engine.settings.allowDataLineage = $AllowDataLineage
    }
    if($StandardReload) {
      $engine.settings.standardReload = $StandardReload
    }
    if($documentTimeout) {
      $engine.settings.documentTimeout = $documentTimeout
    }
    if($autosaveInterval) {
      $engine.settings.autosaveInterval = $autosaveInterval
    }
    if($genericUndoBufferMaxSize) {
      $engine.settings.genericUndoBufferMaxSize = $genericUndoBufferMaxSize
    }
    $json = $engine | ConvertTo-Json -Compress -Depth 10
    return Invoke-QlikPut -Path "/qrs/engineservice/$id" -Body $json
  }

    end {
    }
}

if ($loadingModule) {
    Export-ModuleMember -Function 'Update-QlikEngine'
}