Initialer Import des AssetManagers
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$log = Join-Path $env:ProgramData 'AssetManager\commands.log'
|
||||
$clientLog = [System.Collections.Generic.List[string]]::new()
|
||||
$JobResult = @{}
|
||||
New-Item -ItemType Directory -Force -Path (Split-Path $log) | Out-Null
|
||||
function Send-JobCallback([hashtable]$Data) {
|
||||
$json = $Data | ConvertTo-Json -Depth 8 -Compress
|
||||
$bodyBytes = [Text.Encoding]::UTF8.GetBytes($json)
|
||||
$lastError = $null
|
||||
for ($attempt = 1; $attempt -le 3; $attempt++) {
|
||||
try {
|
||||
Invoke-RestMethod -Method Post -Uri '{{CallbackUrl}}' -ContentType 'application/json; charset=utf-8' -Body $bodyBytes -TimeoutSec 60 | Out-Null
|
||||
if ($attempt -gt 1) { Write-JobLog ("Callback accepted on attempt $attempt of 3") }
|
||||
return
|
||||
} catch {
|
||||
$lastError = $_.Exception
|
||||
Write-JobLog ("Callback attempt $attempt of 3 failed: " + $_.Exception.Message)
|
||||
if ($attempt -lt 3) { Start-Sleep -Seconds (2 * $attempt) }
|
||||
}
|
||||
}
|
||||
throw ("Callback failed after 3 attempts: " + $lastError.Message)
|
||||
}
|
||||
function Write-JobLog([string]$Message) {
|
||||
$line = "$(Get-Date -Format o) job={{JobId}} $Message"
|
||||
$clientLog.Add($line)
|
||||
Add-Content -Path $log -Value $line -Encoding UTF8
|
||||
Write-Output $line
|
||||
}
|
||||
try {
|
||||
Write-JobLog 'Job started'
|
||||
try { Send-JobCallback @{status='running'; completed=$false; message='Job started on client'; log=($clientLog -join "`n")} } catch { Write-JobLog ("Initial callback failed: " + $_.Exception.Message) }
|
||||
# --- Eigene Befehle hier einfügen ---
|
||||
|
||||
# --- Ende eigene Befehle ---
|
||||
Write-JobLog 'Job completed'
|
||||
$bodyData = @{status='success'; exit_code=0; completed=$true; message='Job completed'; log=($clientLog -join "`n")}
|
||||
if ($JobResult -is [System.Collections.IDictionary]) { foreach ($key in $JobResult.Keys) { $bodyData[$key] = $JobResult[$key] } }
|
||||
$body = $bodyData | ConvertTo-Json -Depth 8 -Compress
|
||||
Send-JobCallback $bodyData
|
||||
} catch {
|
||||
Write-JobLog ("Job failed: " + $_.Exception.Message)
|
||||
$body = @{status='failed'; exit_code=1; completed=$true; message=$_.Exception.Message; log=($clientLog -join "`n"); stderr=($_ | Out-String)} | ConvertTo-Json -Compress
|
||||
try { Send-JobCallback @{status='failed'; exit_code=1; completed=$true; message=$_.Exception.Message; log=($clientLog -join "`n"); stderr=($_ | Out-String)} } catch {}
|
||||
exit 1
|
||||
}
|
||||
Reference in New Issue
Block a user