Public/ConvertTo-TIConnectorContextCsv.ps1
|
<#
.SYNOPSIS Flattens a TI-Connector context structure into relational records. .DESCRIPTION Resolves workplace and card terminal internal IDs within the connector context and returns a flat array of PSCustomObjects suitable for table views or CSV export. .PARAMETER Context The TIConnector.Context object returned by Get-TIConnectorContext or parsed from JSON. .EXAMPLE Get-TIConnectorContext -ComputerName "192.168.1.100" -Credential $cred | ConvertTo-TIConnectorContextCsv | Export-Csv -Path "Context.csv" -Delimiter ";" -NoTypeInformation #> function ConvertTo-TIConnectorContextCsv { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [psobject]$Context ) process { $computerName = $Context.ComputerName $cardTerminalLookup = @{} foreach ($terminal in $Context.kartenTerminals) { if ($terminal.internalId) { $cardTerminalLookup[$terminal.internalId] = $terminal } } $workplaceLookup = @{} foreach ($workplace in $Context.arbeitsplaetze) { if ($workplace.internalId) { $workplaceLookup[$workplace.internalId] = $workplace } } $resolveTerminals = { param($terminalIds, $lookup) if (-not $terminalIds) { return $null } $resolved = foreach ($id in $terminalIds) { if ($lookup.ContainsKey($id)) { $item = $lookup[$id] if ($item.label) { "$($item.label) ($id)" } else { $id } } else { $id } } return ($resolved -join ", ") } foreach ($callContext in $Context.aufrufkontexte) { $workplace = $workplaceLookup[$callContext.arbeitsplatzInternalId] [PSCustomObject]@{ WorkplaceId = $callContext.arbeitsplatzId ClientSystemId = $callContext.clientSystemId MandantId = $callContext.mandantId LocalCardTerminals = & $resolveTerminals $workplace.localCardTerminalInternalIds $cardTerminalLookup RemoteCardTerminals = & $resolveTerminals $workplace.remoteCardTerminalInternalIds $cardTerminalLookup ComputerName = $computerName } } } } |