Private/Resolve-BridgeStateForChange.ps1
|
function Resolve-BridgeStateForChange { <# .SYNOPSIS Επιλύει το αντικείμενο κατάστασης γέφυρας που αντιστοιχεί σε μια ανιχνευθείσα αλλαγή. .DESCRIPTION Η Resolve-BridgeStateForChange αναζητά την πλήρη εγγραφή κατάστασης γέφυρας για μια δεδομένη αλλαγή, αντιστοιχίζοντας το GefyraName στα arrays CurrentState ή PreviousState, ανάλογα με την κατεύθυνση του SideIndicator. .PARAMETER Change Το αντικείμενο αλλαγής που περιέχει GefyraName και SideIndicator. .PARAMETER PreviousState Η προηγούμενη συλλογή κατάστασης γεφυρών. .PARAMETER CurrentState Η τρέχουσα συλλογή κατάστασης γεφυρών. .OUTPUTS [object[]] - Array of matching bridge state objects. .EXAMPLE $state = Resolve-BridgeStateForChange -Change $change -PreviousState $prev -CurrentState $curr .NOTES Για αλλαγές '=>', αναζητά μόνο στο CurrentState. Για αλλαγές '<=', αναζητά πρώτα στο CurrentState και εναλλακτικά στο PreviousState. #> [CmdletBinding()] [OutputType([object[]])] param( [Parameter(Mandatory)]$Change, [Parameter()] [AllowNull()] [AllowEmptyCollection()] [object[]]$PreviousState = @(), [Parameter(Mandatory)][object[]]$CurrentState ) if ($Change.SideIndicator -eq '=>') { # Νέα κατάσταση - ψάχνε στο CurrentState $foundState = @($CurrentState | Where-Object { $_.GefyraName -eq $Change.GefyraName }) } else { # Παλιά κατάσταση (<=) - ψάχνε στο CurrentState πρώτα $foundState = @($CurrentState | Where-Object { $_.GefyraName -eq $Change.GefyraName }) if ($foundState.Count -eq 0) { # Fallback: χρήση PreviousState αν δεν υπάρχει στο Current $foundState = @($PreviousState | Where-Object { $_.GefyraName -eq $Change.GefyraName }) } } return $foundState } |