Src/Private/Diagram/Get-AbrArchObjectRepoInfo.ps1

function Get-AbrArchObjectRepoInfo {
    <#
    .SYNOPSIS
    Retrieves information about Veeam Backup & Replication archive object repositories.
 
    .DESCRIPTION
    The Get-AbrArchObjectRepoInfo function retrieves detailed information about the archive object repositories configured in Veeam Backup & Replication.
 
    .EXAMPLE
    Get-AbrArchObjectRepoInfo
 
    This example retrieves information about all archive object repositories.
 
    .OUTPUTS
    System.Object
    Returns objects containing information about the archive object repositories.
 
    .NOTES
    Author: Jonathan Colon
    Date: 2024-12-30
    Version: 1.0
    #>

    param ()
    try {
        Write-Verbose "Collecting Archive Object Repository information from $($VBRServer)."
        $ArchObjStorages = Get-VBRArchiveObjectStorageRepository | Sort-Object -Property Name
        if ($ArchObjStorages) {
            $ArchObjRepositoriesInfo = $ArchObjStorages | ForEach-Object {
                $inobj = [ordered] @{
                    'Type' = $_.ArchiveType
                    'Gateway' = if (-not $_.UseGatewayServer) {
                        switch ($_.GatewayMode) {
                            'Gateway' {
                                switch (($_.GatewayServer | Measure-Object).Count) {
                                    0 { 'Disable' }
                                    1 { $_.GatewayServer.Name.Split('.')[0] }
                                    default { 'Automatic' }
                                }
                            }
                            'Direct' { 'Direct' }
                            default { 'Unknown' }
                        }
                    } else {
                        switch (($_.GatewayServer | Measure-Object).Count) {
                            0 { 'Disable' }
                            1 { $_.GatewayServer.Name.Split('.')[0] }
                            default { 'Automatic' }
                        }
                    }
                }

                $IconType = Get-AbrIconType -String $_.ArchiveType

                [PSCustomObject] @{
                    Name = $_.Name
                    AditionalInfo = $inobj
                    IconType = $IconType
                }
            }
            return $ArchObjRepositoriesInfo
        }
    } catch {
        Write-Verbose -Message $_.Exception.Message
    }
}