lib/ImportBatches.ps1
#Import Batches Function Get-TMImportBatch { param( [Parameter(Mandatory = $false)][String]$TMSession = "Default", [Parameter(Mandatory = $false)][int]$BatchId, [Parameter(Mandatory = $false)][String]$Server = $global:TMSessions[$TMSession].TMServer, [Parameter(Mandatory = $false)]$AllowInsecureSSL = $global:TMSessions[$TMSession].AllowInsecureSSL ) ## Get Session Configuration $TMSessionConfig = $global:TMSessions[$TMSession] if (-not $TMSessionConfig) { Write-Host 'TMSession: [' -NoNewline Write-Host $TMSession -ForegroundColor Cyan Write-Host '] was not Found. Please use the New-TMSession command.' Throw "TM Session Not Found. Use New-TMSession command before using features." } #Honor SSL Settings if ($TMSessionConfig.AllowInsecureSSL) { $TMCertSettings = @{SkipCertificateCheck = $true } } else { $TMCertSettings = @{SkipCertificateCheck = $false } } ## Construct the server URI $instance = $Server.Replace('/tdstm', '') $instance = $instance.Replace('https://', '') $instance = $instance.Replace('http://', '') ## Handle the URL Creation based on the TM Version if ($global:TMSessions[$TMSession].TMVersion.Major -eq 4) { $uri = "https://$Instance/tdstm/module/importbatch/$($BatchId ? $BatchId : "list")" } elseif ($global:TMSessions[$TMSession].TMVersion.Major -eq 5) { $uri = "https://$Instance/tdstm/ws/import/batches" } else { $uri = "https://$Instance/tdstm/ws/import/batches" } ## Attempt the Request try { $response = Invoke-WebRequest -Method Get -Uri $uri -WebSession $TMSessionConfig.TMWebSession @TMCertSettings if ($response.StatusCode -eq 200) { $Result = ($response.Content | ConvertFrom-Json).data } return @($Result) } catch { throw $_ } } #Import Batch Records Function Get-TMImportBatchRecord { param( [Parameter(Mandatory = $false)][String]$TMSession = "Default", [Parameter(Mandatory = $true)][int]$BatchId, [Parameter(Mandatory = $false)][int]$RecordId, [Parameter(Mandatory = $false)][String]$Server = $global:TMSessions[$TMSession].TMServer, [Parameter(Mandatory = $false)]$AllowInsecureSSL = $global:TMSessions[$TMSession].AllowInsecureSSL ) ## Get Session Configuration $TMSessionConfig = $global:TMSessions[$TMSession] if (-not $TMSessionConfig) { Write-Host 'TMSession: [' -NoNewline Write-Host $TMSession -ForegroundColor Cyan Write-Host '] was not Found. Please use the New-TMSession command.' Throw "TM Session Not Found. Use New-TMSession command before using features." } #Honor SSL Settings if ($TMSessionConfig.AllowInsecureSSL) { $TMCertSettings = @{SkipCertificateCheck = $true } } else { $TMCertSettings = @{SkipCertificateCheck = $false } } ## Construct the server URI $instance = $Server.Replace('/tdstm', '') $instance = $instance.Replace('https://', '') $instance = $instance.Replace('http://', '') ## Check version 4 if ($global:TMSessions[$TMSession].TMVersion -like '4*') { ## TODO Get the 4.7 Web Service URI for this $uri = "https://$Instance/tdstm/module/importbatch/$($BatchId ? $BatchId : "list")" } else { if (-not $RecordId) { ## Get a List of the records if no specific record was requested $uri = "https://$Instance/tdstm/ws/import/batch/$($BatchId)/records" } else { ## Get a specific record $uri = "https://$Instance/tdstm/ws/import/batch/$($BatchId)/record/$($RecordId)" } } ## Attempt the Request try { $response = Invoke-WebRequest -Method Get -Uri $uri -WebSession $TMSessionConfig.TMWebSession @TMCertSettings if ($response.StatusCode -eq 200) { $Result = ($response.Content | ConvertFrom-Json).data } return @($Result) } catch { throw $_ } } Function Start-TMImportBatch { param( [Parameter(Mandatory = $false)][String]$TMSession = "Default", [Parameter(Mandatory = $true)][int[]]$BatchId ) ## Get Session Configuration $TMSessionConfig = $global:TMSessions[$TMSession] if (-not $TMSessionConfig) { Write-Host 'TMSession: [' -NoNewline Write-Host $TMSession -ForegroundColor Cyan Write-Host '] was not Found. Please use the New-TMSession command.' Throw "TM Session Not Found. Use New-TMSession command before using features." } ## Construct the server URI $uri = "https://$($TMSessionConfig.TMServer)/tdstm/ws/import/batches" $PatchBody = @{ action = "QUEUE" ids = $BatchId } | ConvertTo-Json ## Attempt the Request try { $response = Invoke-WebRequest -Method Patch -Body $PatchBody -Uri $uri -WebSession $TMSessionConfig.TMWebSession @TMCertSettings if ($response.StatusCode -eq 200) { $Result = $response.Content | ConvertFrom-Json if ($Result.status -ne 'Success') { throw $Result.errors } } } catch { throw $_ } } |