Private/Export-BridgeStatusJson.ps1
function Export-BridgeStatusJson { [CmdletBinding()] <# .SYNOPSIS Εξάγει την κατάσταση γέφυρας σε αρχείο JSON. .DESCRIPTION Η Export-BridgeStatusJson αποθηκεύει δεδομένα κατάστασης γέφυρας σε μορφή JSON σε καθορισμένη διαδρομή. .PARAMETER Data Το αντικείμενο ή η λίστα αντικειμένων που θα εξαχθεί. .PARAMETER Path Η πλήρης διαδρομή του αρχείου εξόδου. .OUTPUTS None. .EXAMPLE Export-BridgeStatusJson -Data $bridgeStatus -Path 'C:\Logs\status.json' .NOTES Χρησιμοποιεί ConvertTo-Json και Set-Content για ασφαλή αποθήκευση. #> [OutputType([void])] param ( [Parameter(Mandatory)][ValidateNotNullOrEmpty()][object[]]$Data, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$Path ) try { $convertToJsonSplat = @{ Depth = 10 Compress = $true } if (-not (Test-Path -Path (Split-Path -Parent $Path))) { throw "Ο φάκελος προορισμού δεν υπάρχει: $(Split-Path -Parent $Path)" } $json = $Data | ConvertTo-Json @convertToJsonSplat $setContentSplat = @{ Path = $Path Value = $json } Set-Content @setContentSplat $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = "✅ JSON αποθηκεύτηκε στο: $Path" } Write-BridgeLog @writeBridgeLogSplat } catch { $writeBridgeLogSplat = @{ Stage = 'Σφάλμα' Message = "❌ Σφάλμα κατά την αποθήκευση JSON: $($_.Exception.Message)" Level = 'Warning' } Write-BridgeLog @writeBridgeLogSplat $errorRecord = [System.Management.Automation.ErrorRecord]::new( ([System.Exception]::new("Σφάλμα αποθήκευσης JSON: $($_.Exception.Message)")), 'JsonExportFailure', [System.Management.Automation.ErrorCategory]::WriteError, $Path ) $PSCmdlet.ThrowTerminatingError($errorRecord) } } |