Issue

After a job completed, another job has to be placed in the Job Queue for the exact same file and with additional arguments, in order to e.g. update properties with values coming from the completed job.


Solution

At the end of the job, a new job can be placed in the Job Queue using the Add-VaultJob cmdlet.

If the new job has to be executed for a specific entity, some -Parameters  have always to be passed, these include the ID of the entity and it's EntityClass. 

In order to pass additional parameters e.g. to update a property on the actual file with some value detected in the current job, you can add them to the -Parameters argument using following code:

Write-Host "Starting job 'Create PDF as attachment' for file '$($file._Name)' ..."
$vaultPDFfileLocation = ...
...
# END OF JOB
Add-VaultJob -Name "UpdateFileProperties" -Description "Update File Properties" -Priority 100 -Parameters @{
    "EntityId" = $file.Id;
    "EntityClassId" = $file._EntityTypeID;

    "PDFVaultLocation" = $vaultPDFfileLocation
}
Write-Host "Completed job 'Create PDF as attachment'"


The $file object is automatically available for us in the newly added job now.

Also the custom argument "PDFVaultLocation" can be directly accessed via the $job  object using $job.PDFVaultLocation:

Write-Host "Starting job 'UpdateFileProperties' for file '$($file._Name)' ..."

Update-VaultFile $file._FullPath -Properties  @{ 'PDF Location' = $job.PDFVaultLocation }
...


Remarks

Add-VaultJob (coolOrange wiki)