Update-QlikUserDirectory.ps1

function Update-QlikUserDirectory {
    <#
    .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-QlikUserDirectory 'abc'
 
    Description of the example.
 
    #>


    <# Enable -Confirm and -WhatIf. #>
    [CmdletBinding(SupportsShouldProcess = $true)]
    param(
    [parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True,Position=0)]
    [string]$id,
    
    [string]$name,
    [string]$path,
    [string]$username,
    [string]$password,
    [string]$ldapFilter,
    [int]$timeout,
    [Int]$pageSize
    )

    begin {
    }

    process{
    $ud = Get-QlikUserDirectory -Id $id -raw
    if($name) {
      $ud.name = $name
    }
    if($path) {
      ($ud.settings | ? name -eq path).value = $path
    }
    if($username) {
      ($ud.settings | ? name -eq 'User name').value = $username
    }
    if($password) {
      ($ud.settings | ? name -eq password).value = $password
    }
    if($ldapFilter) {
      ($ud.settings | ? name -eq 'LDAP Filter').value = $ldapFilter
    }
    if($timeout) {
      ($ud.settings | ? name -eq 'Synchronization timeout in seconds').value = $timeout
    }
    if($pageSize) {
      ($ud.settings | ? name -eq 'Page size').value = $pageSize
    }
    $json = $ud | ConvertTo-Json -Compress -Depth 10
    return Invoke-QlikPut -Path "/qrs/userdirectory/$id" -Body $json
  }

    end {
    }
}

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