```powershell
[CmdletBinding()]
param(
    [Parameter(Mandatory = $true)][string]$ApiKey,
    [Parameter(Mandatory = $true)][string]$BaseUrl,
    [Parameter(Mandatory = $true)][string]$RunId,
    [Parameter(Mandatory = $true)][string]$PollResultUrl,
    [string]$TrackItemIds,
    [string]$TrackItemNames,
    [int]$ExpectedRunTime = 3600
)

$BaseUrl = $BaseUrl.TrimEnd('/')
$headers = @{ 
    Authorization = "X-API-KEY $ApiKey"
    "Content-Type" = "application/json"
}

$terminalStatuses = @("Finished", "Failed", "Stopped")
$reportsDir = Join-Path (Get-Location).Path "reports"
if (-not (Test-Path $reportsDir)) {
    New-Item -ItemType Directory -Path $reportsDir -Force | Out-Null
}

function Save-FileFromUrl {
    param(
        [string]$Url,
        [string]$Path
    )

if (-not $Url) {
        return
    }

Invoke-RestMethod -Uri $Url -Headers $headers -Method Get -OutFile $Path
}

Write-Host "Polling Leapwork Performance run $RunId ..."
Start-Sleep -Seconds 10

$startTime = Get-Date
$status = $null
$statusResponse = $null

while ($true) {
    $elapsed = [int]((Get-Date) - $startTime).TotalSeconds
    if ($elapsed -ge $ExpectedRunTime) {
        Write-Warning "Polling timeout reached after $ExpectedRunTime seconds."
        break
    }

$statusResponse = Invoke-RestMethod -Uri $PollResultUrl -Headers $headers -Method Get
    $status = $statusResponse.status
    Write-Host "[$elapsed s] Status: $status"

if ($terminalStatuses -contains $status) {
        break
    }

Start-Sleep -Seconds 5
}

if (-not ($terminalStatuses -contains $status)) {
    Write-Host "Stopping run because it did not reach a terminal status in time..."
    Invoke-RestMethod -Uri "$BaseUrl/api/integration/stopIntegration?runId=$RunId" -Headers $headers -Method Get | Out-Null
    Start-Sleep -Seconds 2
    $statusResponse = Invoke-RestMethod -Uri $PollResultUrl -Headers $headers -Method Get
    $status = $statusResponse.status
}

Write-Host "Final status: $status"
Write-Host ($statusResponse | ConvertTo-Json -Depth 10)

$dateStamp = Get-Date -Format "yyyyMMdd"
$excelPath = Join-Path $reportsDir "RunMetadata_${dateStamp}_${RunId}.xlsx"
$analysisPath = Join-Path $reportsDir "RunMetadata_${dateStamp}_${RunId}.txt"

Save-FileFromUrl -Url $statusResponse.excelReportUrl -Path $excelPath
Save-FileFromUrl -Url $statusResponse.aiAnalysisReportUrl -Path $analysisPath

if ($status -ne "Finished") {
    throw "Integration run did not finish successfully. Final status: $status"
}
```
