Fix UTF-8 Encoding

This commit is contained in:
2026-04-09 16:37:27 +02:00
parent edfb76dd8e
commit aacdd9c39f

View File

@@ -11,11 +11,11 @@ param(
.DESCRIPTION .DESCRIPTION
Ablauf: Ablauf:
1. Optional Self-Update aus dem Public-Repo 1. Optional Self-Update aus dem Public-Repo
2. AZ_GITHUB_TOKEN prüfen 2. AZ_GITHUB_TOKEN pruefen
3. Private Konfiguration aus dem Private-Repo laden 3. Private Konfiguration aus dem Private-Repo laden
4. Genau eine Datei aus Input-Ordner lesen 4. Genau eine Datei aus Input-Ordner lesen
5. Dateiname ohne Endung als Belegnummer verwenden 5. Dateiname ohne Endung als Belegnummer verwenden
6. SQL-Abfrage ausführen 6. SQL-Abfrage ausfuehren
7. Ergebnis an n8n senden 7. Ergebnis an n8n senden
8. Logging in Datei 8. Logging in Datei
@@ -90,7 +90,7 @@ function Test-AzGithubToken
{ {
if ([string]::IsNullOrWhiteSpace($env:AZ_GITHUB_TOKEN)) if ([string]::IsNullOrWhiteSpace($env:AZ_GITHUB_TOKEN))
{ {
throw " Umgebungsvariable AZ_GITHUB_TOKEN ist nicht gesetzt." throw "ERROR: Umgebungsvariable AZ_GITHUB_TOKEN ist nicht gesetzt."
} }
} }
@@ -103,17 +103,17 @@ function Start-SelfUpdateIfNeeded
if ($SkipSelfUpdateCheck) if ($SkipSelfUpdateCheck)
{ {
Write-ConsoleLog "Self-Update-Prüfung wurde übersprungen (Restart nach Update)." "INFO" Write-ConsoleLog "Self-Update-Pruefung wurde uebersprungen (Restart nach Update)." "INFO"
return return
} }
$localScriptPath = $PSCommandPath $localScriptPath = $PSCommandPath
if ([string]::IsNullOrWhiteSpace($localScriptPath)) if ([string]::IsNullOrWhiteSpace($localScriptPath))
{ {
throw " Lokaler Skriptpfad konnte nicht ermittelt werden." throw "ERROR: Lokaler Skriptpfad konnte nicht ermittelt werden."
} }
Write-ConsoleLog "Prüfe auf neue Public-Version aus Git..." "INFO" Write-ConsoleLog "Pruefe auf neue Public-Version aus Git..." "INFO"
try try
{ {
@@ -132,11 +132,11 @@ function Start-SelfUpdateIfNeeded
if ($localHash -eq $remoteHash) if ($localHash -eq $remoteHash)
{ {
Write-ConsoleLog " Public-Skript ist bereits aktuell." "SUCCESS" Write-ConsoleLog "OK: Public-Skript ist bereits aktuell." "SUCCESS"
return return
} }
Write-ConsoleLog " Neue Public-Version gefunden. Aktualisiere lokales Skript..." "WARN" Write-ConsoleLog "WARN: Neue Public-Version gefunden. Aktualisiere lokales Skript..." "WARN"
$tempUpdatedScript = Join-Path $env:TEMP ("{0}-{1}.ps1" -f $script:ScriptName, [guid]::NewGuid().ToString()) $tempUpdatedScript = Join-Path $env:TEMP ("{0}-{1}.ps1" -f $script:ScriptName, [guid]::NewGuid().ToString())
Set-Content -Path $tempUpdatedScript -Value $remoteContent -Encoding UTF8 Set-Content -Path $tempUpdatedScript -Value $remoteContent -Encoding UTF8
@@ -144,7 +144,7 @@ function Start-SelfUpdateIfNeeded
Copy-Item -Path $tempUpdatedScript -Destination $localScriptPath -Force Copy-Item -Path $tempUpdatedScript -Destination $localScriptPath -Force
Remove-Item -Path $tempUpdatedScript -Force -ErrorAction SilentlyContinue Remove-Item -Path $tempUpdatedScript -Force -ErrorAction SilentlyContinue
Write-ConsoleLog " Lokales Public-Skript wurde aktualisiert." "SUCCESS" Write-ConsoleLog "OK: Lokales Public-Skript wurde aktualisiert." "SUCCESS"
Write-ConsoleLog "Starte aktualisierte Version neu..." "INFO" Write-ConsoleLog "Starte aktualisierte Version neu..." "INFO"
$argumentList = @( $argumentList = @(
@@ -155,11 +155,11 @@ function Start-SelfUpdateIfNeeded
Start-Process -FilePath 'powershell.exe' -ArgumentList $argumentList | Out-Null Start-Process -FilePath 'powershell.exe' -ArgumentList $argumentList | Out-Null
Write-ConsoleLog "Aktuelle Instanz wird beendet, damit die neue Version ausgeführt wird." "INFO" Write-ConsoleLog "Aktuelle Instanz wird beendet, damit die neue Version ausgefuehrt wird." "INFO"
exit 0 exit 0
} catch } catch
{ {
throw " Fehler bei der Self-Update-Prüfung des Public-Skripts: $($_.Exception.Message)" throw "ERROR: Fehler bei der Self-Update-Pruefung des Public-Skripts: $($_.Exception.Message)"
} }
} }
@@ -197,7 +197,7 @@ function Get-PrivateConfig
return $script:PrivateConfig return $script:PrivateConfig
} catch } catch
{ {
throw " Fehler beim Laden der privaten Konfiguration: $($_.Exception.Message)" throw "ERROR: Fehler beim Laden der privaten Konfiguration: $($_.Exception.Message)"
} }
} }
@@ -224,7 +224,7 @@ function Test-RequiredConfig
{ {
if (-not $Config.ContainsKey($key) -or [string]::IsNullOrWhiteSpace([string]$Config[$key])) if (-not $Config.ContainsKey($key) -or [string]::IsNullOrWhiteSpace([string]$Config[$key]))
{ {
throw " Fehlende Konfiguration: '$key'" throw "ERROR: Fehlende Konfiguration: '$key'"
} }
} }
} }
@@ -238,19 +238,19 @@ function Get-SingleInputFile
if (-not (Test-Path -Path $InputFolder)) if (-not (Test-Path -Path $InputFolder))
{ {
throw " Input-Ordner existiert nicht: $InputFolder" throw "ERROR: Input-Ordner existiert nicht: $InputFolder"
} }
$files = Get-ChildItem -Path $InputFolder -File $files = Get-ChildItem -Path $InputFolder -File
if ($files.Count -eq 0) if ($files.Count -eq 0)
{ {
throw " Keine Datei im Input-Ordner gefunden: $InputFolder" throw "ERROR: Keine Datei im Input-Ordner gefunden: $InputFolder"
} }
if ($files.Count -gt 1) if ($files.Count -gt 1)
{ {
throw " Es wurden mehrere Dateien gefunden. Erwartet wird genau eine Datei im Ordner: $InputFolder" throw "ERROR: Es wurden mehrere Dateien gefunden. Erwartet wird genau eine Datei im Ordner: $InputFolder"
} }
return $files[0] return $files[0]
@@ -297,7 +297,7 @@ function Invoke-SqlTopOneQuery
if ($dataTable.Rows.Count -eq 0) if ($dataTable.Rows.Count -eq 0)
{ {
Write-Log " Kein SQL-Datensatz gefunden." "WARN" Write-Log "WARN: Kein SQL-Datensatz gefunden." "WARN"
return $null return $null
} }
@@ -316,17 +316,18 @@ function Invoke-SqlTopOneQuery
} }
} }
Write-Log " SQL-Datensatz erfolgreich gelesen." "SUCCESS" Write-Log "OK: SQL-Datensatz erfolgreich gelesen." "SUCCESS"
return [pscustomobject]$result return [pscustomobject]$result
} catch } catch
{ {
throw " Fehler bei SQL-Abfrage: $($_.Exception.Message)" throw "ERROR: Fehler bei SQL-Abfrage: $($_.Exception.Message)"
} finally } finally
{ {
if ($connection.State -ne [System.Data.ConnectionState]::Closed) if ($connection.State -ne [System.Data.ConnectionState]::Closed)
{ {
$connection.Close() $connection.Close()
} }
$connection.Dispose() $connection.Dispose()
} }
} }
@@ -347,10 +348,10 @@ function Send-N8nWebhook
{ {
$json = $Payload | ConvertTo-Json -Depth 10 $json = $Payload | ConvertTo-Json -Depth 10
$null = Invoke-RestMethod -Uri $WebhookUrl -Method Post -ContentType 'application/json' -Body $json $null = Invoke-RestMethod -Uri $WebhookUrl -Method Post -ContentType 'application/json' -Body $json
Write-Log " Webhook erfolgreich gesendet." "SUCCESS" Write-Log "OK: Webhook erfolgreich gesendet." "SUCCESS"
} catch } catch
{ {
throw " Fehler beim Senden des Webhooks: $($_.Exception.Message)" throw "ERROR: Fehler beim Senden des Webhooks: $($_.Exception.Message)"
} }
} }
@@ -374,7 +375,7 @@ try
$script:LogFilePath = Join-Path $config.LogFolder ("KANBAN-Rational-Druck_{0}.log" -f (Get-Date -Format 'yyyy-MM-dd')) $script:LogFilePath = Join-Path $config.LogFolder ("KANBAN-Rational-Druck_{0}.log" -f (Get-Date -Format 'yyyy-MM-dd'))
Write-Log "Starte Skriptausführung KANBAN-Rational-Druck..." "INFO" Write-Log "Starte Skriptausfuehrung KANBAN-Rational-Druck..." "INFO"
$inputFile = Get-SingleInputFile -InputFolder $config.InputFolder $inputFile = Get-SingleInputFile -InputFolder $config.InputFolder
@@ -426,7 +427,7 @@ try
Send-N8nWebhook -WebhookUrl $config.WebhookUrl -Payload $payload Send-N8nWebhook -WebhookUrl $config.WebhookUrl -Payload $payload
Write-Log "Skriptausführung abgeschlossen." "SUCCESS" Write-Log "Skriptausfuehrung abgeschlossen." "SUCCESS"
} catch } catch
{ {
try try
@@ -445,7 +446,7 @@ try
Write-Log $_.Exception.Message "ERROR" Write-Log $_.Exception.Message "ERROR"
} catch } catch
{ {
Write-Host " Kritischer Fehler: $($_.Exception.Message)" Write-Host "ERROR: Kritischer Fehler: $($_.Exception.Message)"
} }
exit 1 exit 1