Public/Get-BridgeStatusComparison.ps1
function Get-BridgeStatusComparison { [CmdletBinding()] <# .SYNOPSIS Συγκρίνει προηγούμενη και τρέχουσα κατάσταση γεφυρών. .DESCRIPTION Η Get-BridgeStatusComparison συγκρίνει δύο snapshots γεφυρών και ανιχνεύει αλλαγές κατάστασης. .PARAMETER OutputFile Το path του αρχείου JSON για αποθήκευση νέου snapshot. .PARAMETER ApiKey Το API Key για OCR ανάλυση αν απαιτηθεί. .PARAMETER PoUserKey Το User Key του παραλήπτη για ειδοποίηση. .PARAMETER PoApiKey Το API Token της εφαρμογής Pushover. .OUTPUTS None. .EXAMPLE Get-BridgeStatusComparison -OutputFile 'C:\Logs\bridge-status.json' -ApiKey 'abc123' -PoUserKey 'user123' -PoApiKey 'token123' .NOTES Χρησιμοποιεί OCR αν χρειάζεται, συγκρίνει states και αποστέλλει ειδοποιήσεις. #> param ( [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$OutputFile, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$ApiKey, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$PoUserKey, [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$PoApiKey ) $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = 'Starting comparison...' Level = "Verbose" } Write-BridgeLog @writeBridgeLogSplat if (-not (Test-Path $OutputFile)) { # Το αρχείο δεν υπάρχει – πρώτη εκτέλεση $getDiorigaStatusSplat = @{ OutputFile = $OutputFile } $currentState = Get-BridgeStatus @getDiorigaStatusSplat $previousState = $currentState } else { # Το αρχείο υπάρχει, μπορείς να το διαβάσεις με ασφάλεια $getDiorigaPreviousStatusSplat = @{ InputFile = $OutputFile } $previousState = Get-BridgePreviousStatus @getDiorigaPreviousStatusSplat $currentState = Get-BridgeStatus } $invokeSplat = @{ PreviousState = $previousState CurrentState = $currentState ApiKey = $ApiKey PoUserKey = $PoUserKey PoApiKey = $PoApiKey } Invoke-BridgeStatusComparison @invokeSplat $exportBridgeStatusJsonSplat = @{ Data = $currentState Path = $OutputFile } Export-BridgeStatusJson @exportBridgeStatusJsonSplat $writeBridgeLogSplat = @{ Stage = 'Ανάλυση' Message = 'Finished comparison and saved snapshot.' Level = "Verbose" } Write-BridgeLog @writeBridgeLogSplat } |