Src/Private/Get-AbrFgtSDWAN.ps1
function Get-AbrFgtSDWAN { <# .SYNOPSIS Used by As Built Report to returns SD-WAN settings. .DESCRIPTION Documents the configuration of Fortinet FortiGate in Word/HTML/Text formats using PScribo. .NOTES Version: 0.3.0 Author: Alexis La Goutte Twitter: @alagoutte Github: alagoutte Credits: Iain Brighton (@iainbrighton) - PScribo module .LINK https://github.com/AsBuiltReport/AsBuiltReport.Fortinet.FortiGate #> [CmdletBinding()] param ( ) begin { Write-PScriboMessage "Discovering SD-WAN settings information from $System." } process { $sdwan = Get-fgtSystemSDWAN if ($sdwan) { Section -Style Heading2 'SD-WAN' { Paragraph "The following section details SD-WAN settings configured on FortiGate." BlankLine if ($sdwan -and $InfoLevel.SDWAN -ge 1) { Section -Style Heading3 'Summary' { Paragraph "The following section provides a summary of SD-WAN settings." BlankLine $OutObj = [pscustomobject]@{ "Zone" = @($sdwan.zone).count "Member" = @($sdwan.members).count "Health Check" = @($sdwan.'health-check').count "Rules" = @($sdwan.'service').count } $TableParams = @{ Name = "Summary" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } Section -Style Heading3 'Configuration' { Paragraph "The following section provides configuration of SD-WAN settings." BlankLine $OutObj = [pscustomobject]@{ "Status" = $sdwan.'status' "Load Balance Mode" = $sdwan.'load-balance-mode' "Neighbor Hold Down" = $sdwan.'neighbor-hold-down' "Fail Detect" = $sdwan.'fail-detect' } $TableParams = @{ Name = "Configuration" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } Section -Style Heading3 'SD-WAN Zone' { $OutObj = @() foreach ($zone in $sdwan.zone) { $OutObj += [pscustomobject]@{ "Name" = $zone.name "Service SLA" = $zone.'service-sla-tie-break' } } $TableParams = @{ Name = "SD-WAN Zone" List = $false ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } if ($sdwan.members) { Section -Style Heading3 'SD-WAN Members' { $OutObj = @() foreach ($member in $sdwan.members) { $OutObj += [pscustomobject]@{ "Num" = $member.'seq-num' "Interface" = $member.interface "Zone" = $member.zone "Gateway" = $member.gateway "Status" = $member.status "Comment" = $member.comment } } $TableParams = @{ Name = "SD-WAN Members" List = $false ColumnWidths = 10, 15, 20, 20, 10, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($sdwan.'health-check') { Section -Style Heading3 'SD-WAN Health Check' { $OutObj = @() foreach ($hc in $sdwan.'health-check') { $OutObj += [pscustomobject]@{ "Name" = $hc.name "Detect Mode" = $hc.'detect-mode' "Protocol" = $hc.protocol "Server" = $hc.server -replace ('"', '') "Update Static Route" = $hc.'update-static-route' "Members" = $hc.members.'seq-num' } } $TableParams = @{ Name = "SD-WAN Health Check" List = $false ColumnWidths = 14, 20, 20, 20, 15, 11 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($sdwan.service) { Section -Style Heading3 'SD-WAN Rule' { $OutObj = @() foreach ($service in $sdwan.service) { $OutObj += [pscustomobject]@{ "Name" = $service.name "Source" = $service.src.name "Destination" = $service.dst.name "Mode" = $service.mode "Health Check" = $service.'health-check'.name "Priority Members" = $service.'priority-members'.'seq-num' "Status" = $service.status } } $TableParams = @{ Name = "SD-WAN Rule" List = $false ColumnWidths = 14, 20, 15, 15, 15, 11, 10 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } } } end { } } |