Convert-SonusSbcConfigToWord.ps1 – Revision History

I’ve been bashing at this script for over eight years now and the main post’s getting a bit long with the revision history. I’ve taken a leaf from a peer’s book and decided to spin the entire history out into its own post. Whether the ancient history is of use to anyone remains to be seen, but here it is regardless.

Here’s the main post for this script.

Revision History

v12.1.0 22nd April 2024

  • Added new bits in 12.1.0:
    • New TLS ciphers added to Security / TLS Profiles / Client & Server Cipher Lists
    • ‘OPTIONS mode’ added to SIP SigGps
    • ‘TcpKeepAlive’ to SIP Server Tables
    • ‘OptionPassthrugh[SIC]’ to SIP Profiles
    • New protocols to $TlsProtocolLookup (for TLS Profiles)
    • ‘Server Cipher List’ in TLS profiles
  • Fixed bugs:
    • ‘<n/a> this rls’ :-)

v12.0.1 3rd October 2023

  • Added new bits found recently:
    • New values to $NumberTypeLookup, and renamed to $ClgNumberTypeLookup
    • Cloned $NumberTypeLookup to new $CldNumberTypeLookup, as some of the values no longer align between calling and called.
    • New values to $TransferCapabilityLookup, $NumberingPlanLookup
    • ‘Normal’ call type renamed ‘Standard’ in $CRDestinationTypeLookup & $CRCallPriorityLookup
    • Added ‘Trunk Group’ as a Destination Type in call routing table entry, and suppressed display of SigGp and other parameters
  • Fixed bugs:
    • A Routing Table’s top ‘H-table’ may incorrectly show a value for First Signaling Group when DestinationType is ‘Deny’ or ‘Trunk Group’
    • $Q850DescriptionLookup entries for 23 & 24 contained a rogue space in their index. They would have never shown in any table that specified them
    • SNMP / TCA Config wasn’t showing ‘%’ after the value for Logging Partition Usage

v12.0.0 * Not released.

  • Added new bits in 12.0.0:
    • ‘Global Date/Time Format’ in Logging Configuration / Global Log
    • ‘Session Timer Offset’ in SIP Profiles. (Appears if Session Timer is ‘Enable’)
    • Added ‘Diagnostic Logging / By Call Criteria’
  • Added new bits found recently:
    • New transformation types added to $InputFieldLookup & $OutputFieldLookup (thanks Mike)
    • Updated Logging Configuration / Global Log to show for all machine types
    • Added new 1k ‘mirrored port’ values to $PortMirrorPortLookup

v11.0.0 4th February 2022

  • Added new bits in 11.0.0:
    • ‘Enforce SG Codec Priority’ in Media List
    • New section ‘Listen Port’ in SIP
    • Changed how SIP Sig Gps and SIP Recorders display ‘Listen Port’ info. (If new format is present it will be used, else legacy)
  • Added new bits in 9.0.7:
    • Added new RSA-AES-GCM cipher suites for TLS 1.2 interop
    • Added new ‘Media Codec Latch’ in SIP Sig SPs
  • Added [System.Version] declaration in Get-UpdateInfo to prevent issues where ‘9.0.4’ is apparently > ‘11.0.0’
  • Fixed bugs:
    • Routing table ‘call priority’ = ‘Emergency’ was being reported as ‘blank’ due to incorrect ID in $CRCallPriorityLookup

v9.0.7 * Not released.

  • v11 preceeded 9.0.7 due to the staggered versioning of the soft and hard platforms.

v9.0.6 * Not released.

  • No new functionality, no bugs unearthed.

v9.0.5 * Not released.

  • No new functionality, no bugs unearthed.

v9.0.4B * Not released.

  • Updated for PowerShell v7 compatibility:
    • Replaced all tests for “if -eq ”” with ‘if ([string]::IsNullOrEmpty…’
    • Added ‘[char[]]’ to multiple-value ‘.split()’ methods
    • Changed $NodeInfoArray creation from ‘.split()’ to ‘-split’ & added blank line test/continue
    • Removed reference to [Microsoft.Office.Interop.Word.WdExportCreateBookmarks] enum
  • Removed obsolete $NotificationData

v9.0.4 15th July 2021

  • Added new bit in 9.0.4:
    • Added Global Security Options / Test a Call

v9.0.3 * Not released

  • No new functionality, no bugs unearthed.

v9.0.2 28th January 2021

  • Changed Network Monitoring / Link monitors from h-table to v-table and updated to accommodate new values in 9.0.2
  • Added Protocols / IPSec / Tunnel Table
  • Changed some references to ‘<n/a>’ and ‘<Not Captured>’ to ‘<Not Available>’ to reduce ambiguity & increase consistency
  • Now stamps ‘<Not Available>’ into System / Node-Level Settings if the SweLite ID in nodeinfo.txt is blank
  • Fixed bugs:
    • Fixed bug introduced in 9.0.1 where the lower half of each SIP Server table was skipped. (Bad test of SIP Recorders)
    • Suppressed display of ‘Send STUN Packets’ in Media / Media System Configuration for the SweLite

v9.0.1 7th November 2020

  • Consolidated creation of $SgTableLookup to new combined section in the ‘first run’ loop, as SigGps now recursively reference themselves for Call Recording
  • Removed redundant Sig Gp type (e.g. ‘(SIP)’) from the start of each SigGp heading
  • Updated Security / TLS Profiles to now show only one instance of Certificate, now under ‘Common Attributes’
  • Added new bits in 9.0.0 (SweLite) / 9.0.0 (1k/2k):
    • ‘SIP Recorder’ (type) in SIP Server Tables
    • ‘SIP Recording’ section in SIP
    • ‘SIP Recording’ in SIP Sig Gps
    • ‘E911 Notification Manager’ in Emergency Services
    • Removed Forking from the licences table (as from v9 it’s now licenced by default – but still displaying in the 1k/2k version of the table)
  • Fixed bugs / new bits missed previously:
    • Added ‘Drain’ to $EnabledLookup & replaced ‘Enabled’ value with ‘customAdminState’ in Sig Gps where the latter is present
    • SIP SigGp was reporting the default $SipGp.IE.Description instead of $SIPgroupDescription. (Only apparent if $SipGp.IE.Description was blank)
    • Fixed bug where Security / TLS Profiles was showing a blank instead of the SBC certificate name

v8.1.5 16th August 2020

  • Added display of SILK licences to the SweLite’s System / Licensing / Current Licenses
  • Now reports ‘License Expiration’ value from nodeinfo.txt for 1k/2k. (Was previously suppressed. I don’t know why).
  • Updated label on SweLite’s License ‘Virtual DSP Sessions’ to ‘Enhanced Media Sessions with Transcoding’
  • Updated label on SweLite’s License ‘Proxy RTP <-> SRTP Sessions’ to ‘Enhanced Media Sessions without Transcoding’
  • Removed test to suppress System / Node Level Settings / Country Level Information if SweLite: it’s visible there now
  • SweLite: Removed the ‘License Expiration’ line from the bottom of the licences table
  • Changed license display: if not licenced, replace any ‘0’ value with ‘Not Licensed’
  • Added new bits in 8.1.0 (SweLite) / 8.1.5 (1k/2k):
    • “Teams Local Media optimization” in SIP Sig Gps
    • Primary & Secondary Source to System / Node Level Settings / Domain Name Service
  • Fixed bugs:
    • Updated input “$Fullname” to remove array declaration (Tks Mike.)
    • Some SBCs previously reported two blank lines between feature licences and the expiry, etc footer. Now back to just one.
    • SIP SigGp: Supported Audio Mode of “Proxy with local SRTP” & Proxy Local SRTP Crypto Profile ID should not show on a 1k/2k. Corrected.

v8.1.0 14th March 2020

  • Restructured to support batch processing direct from the pipeline. Added new batch example:
    gci *.tar | .\Convert-RibbonSbcConfigToWord.ps1 -SkipUpdateCheck -MakePDF
  • Added new bits in 8.1.0:
    • “Country Code” in System / Node Level Settings
    • “Bad Actors” table under Settings / Security
    • “Explicit Acknowledgement of Pre-Login Info” in Security / Users / Global Security Options
    • “Certificate” in Security / TLS Profiles
    • “SBC Supplementary Certificates” in Security / SBC Certificates
    • “SILK” in System / Licensing / Current Licenses
    • “DC Enabled” in Auth and Directory Services / Acive Directory / Domain Controllers
  • Fixed bugs:
    • “Lockout duration” was always showing under Security / Users / Global Security Options, even if Number of Failed Logins was set to “No lockout”
    • Was not correctly handling “SupportsShouldProcess”. As resolving this will add a confirm prompt for each iteration (potentially breaking existing workflow), I’ve opted to disable it
    • Under System / Node-Level Settings, ‘Power LED’ was misspelt
  • Updated label on SIP Sig Sp ‘Outbound Proxy’ to now show as ‘Outbound Proxy IP/FQDN’

v8.0.3 * Not released.

  • Added display of settings when Security / Users / Global Security Options / Enhanced Password Security = Yes

v8.0.2 * Not released.

  • No new functionality, no bugs unearthed.

v8.0.1B – 21st April 2019

  • Changed Sig Gp ‘Supported Video/Application Modes’ to display ‘[None]’ if $LicencedForVideo but no modes applicable (rather than blank)
  • Cosmetic: moved ‘Static Host’ in SIP profiles between ‘FQDN in From’ and ‘Contact’ headers to align with on-screen
  • Updated ‘Static Host’ to new label ‘Static Host FQDN/IP[:port]’
  • Added another example, showing how you can batch and drop the output files in another folder. (Thanks Cookie!)
  • Bug CHOR-3343 in 8.0.1 b180 & 181 results in the SWeLite dropping its hostname from nodeinfo.txt, replaced by “/usr/sbin/ line 74: hostname: not found”.
    – Updated the script to drop a warning and continue, rather than abort
  • Re-jigged wording of SIP Sig Gp ‘Supported Audio Modes’ and ‘Supported Video/Application Modes’ to align with current on-screen experience
  • Updated wording of Sig Gp MOH option [2] from ‘Enabled for 2-way Hold Only’ to ‘Enabled for SDP Inactive’
  • Added new bits in SweLite v8.0.0:
    • ICE Support added to SIP Sig Gps. (Removed previous test for Lite that hid this)
    • Opus codec to the media profile options
  • Fixed bugs:
    • ‘Static Host’ now correctly displays if $FQDNinContactHeader = ‘Static’ [3]
    • Fixed one bad example: was using “where” shortcut instead of “foreach”
    • Corrected wrong quotes in the write-warning message under “$NodeHostname.CompareTo”. Was not resolving variable names
    • SIP Sig Gp was not showing ‘Nonce Lifetime’ if Nonce Expiry = Limited. Deleted the now-redundant $SipNonceExpiryLookup

v8.0.1 – 30th January 2019

  • Added new bits in 8.0.1:
    • Changed ISDN Sig Gp for new ‘Until Timer Expiry’ option in ‘Play Inband Message Post-Disconnect’
    • Added new ‘Convert DISC PI=1,8 to Progress’ to ISDN Sig Gp
  • Fixed bugs:
    • If the SBC has only 1 Transformation Table it would not display. (Bug in the alpha sort introduced in v7.0.0B)
    • Corrected several bugs in display of ‘DTLS-SRTP Profiles’
    • Corrected bug in Media Lists where the ‘DTLS-SRTP Profile’ value wasn’t correctly reported
    • Certs was truncating parameters if one happened to be a URL (as I was splitting on ‘/’)
    • Certs wasn’t populating the issuer’s details (the RHS of the table)
  • Created new $SipProfileCntctHdrLookup & edited values in $SipProfileFrmHdrLookup for new on-screen text
  • Added “[No CN]” text if a cert (so far GoDaddy roots) has no CN

v8.0.0B – 16th November 2018

  • Updated label and display of SIP Sig Gp / Media Info / Supported Audio(/Fax) Modes to match current display syntax: Lite and 1k2k
  • Fixed bug:
    • The logic for displaying SIP Sig Gp ICE Mode was faulty. (Mitsu-San yet again on the ball!)

v8.0.0 – 26th September 2018

  • Updated name to “Convert-RibbonSbcConfigToWord.ps1”
  • Added new bits in 8.0.0 (b502):
    • NEW COLOUR SCHEME! (And added “-SonusGreen” switch for the die-hards)
    • TOD Routing
    • Load Balancing options 4 & 5 to $SipLoadBalancingLookup
    • ‘SIP Failover Cause Codes’ in SIP Sig Gps
    • ‘RTCP Multiplexing’ in SIP Sig Gps
    • ‘ICE Mode’ in SIP Sig Gps
    • Renamed ‘Media Crypto Profiles’ to ‘SDES-SRTP Profiles’
    • ‘DTLS-SRTP Profiles’
    • ‘Redundancy Retry Timer’ in SIP Profiles
    • Grouped Transformations, TOD, Call Routing & Call Actions in new ‘Call Routing’ group to align with the new on-screen layout
  • Added new test in Test-ForNull to drop a marker in the doc if an expected lookup returned $null
  • Set Word to disable spelling and grammar checking in the document. (Thanks Mike!)
  • Hid the display of “Translations” (long obsolete)
  • Fixed bugs:
    • Renamed variables in the SGPeers’ .split() code to make them unique. (Had accidentally reused old having copy/pasted)
    • Corrected display of ‘SDES-SRTP Profiles’ Derivation Rate to add the ‘2^’ prefix for non-zero values
    • If you ran with “-do calls” it would incorrectly not show the “incomplete” warning after the TOC. (“calls” sounds like “all”)

v7.0.3 – 31st July 2018

  • Added new bits in 7.0.2 (b485) and SWe Lite 7.0.3 (b141):
    • New SIP Sig Gp Interop Mode ‘Header Transparency’
    • Changed SIP Profile’s ‘FQDN in Contact Header’ from $EnableLookup to $SipProfileFrmHdrLookup for Teams Direct Routing
  • Changed Media Profiles and Media Crypto Profiles to V-tables
  • Improved error reporting if the PDF exists and is open (i.e. locked) when the script goes to create it
  • Major update to the SIP Message Manipulation rules:
    • Changed handling of SIP ElementDescriptors to break out the Token, Prefix and Suffix to a separate line for each
    • Added the “pre-400” messages to $SIPDescriptionLookup
    • Changed SMM rules to use $SIPDescriptionLookup when Applicable Messages = Selected Messages & a SIP code is matched
    • SMM Header & Request Line rules were not displaying URI & URIUser parameters
    • Changed SMM rules to display the header name in Title Case
    • Added some missing descriptors to $SipElementDescElementClassLookup & $SipElementDescActionLookup to improve SMM
    • Corrected display of “Ordinal” value in Header rules. Now only shows when the header name is Contact, Route, Record-Route or History-Info or PAI
    • Suppressed incorrect display of “Value” when Action = Remove
  • Fixed bugs:
    • Corrected SWeLite’s Media Crypto Profiles, suppressing display of Master Key Lifetime, Lifetime Value and Derivation Rate values
    • Func Dump-ErrToScreen was not correctly dumping the error to screen when in “non-debug” mode
    • Added some missing SIP messages to the $SIPDescriptionLookup. (Thank you again Mitsu-San)
    • Updated Strip-TrailingCR to keep removing the last char from the string until the last char ISN’T a CR. (Was only stripping once).



v7.0.1 – 14th April

  • Added new bit in 7.0.1 (b483):
    • “Encrypt AD Cache” in Auth and Directory Services / AD / Configuration
  • Re-jigged AD / Configuration to current layout. Removed some old variables. Changed label on “AD Backup” to “AD Backup Failure Alarm”

v7.0.0C – 2nd March 2018

  • Added new bits in 6.1.5 (b486):
    • Added ‘DTMF Minimum Level’ to Media / Media Lists
    • Added ‘Early Media for PI: 2(Dest not ISDN)’ to ISDN Sig Gps
    • Changed label of ‘Add Progress Indicator to Setup’ in ISDN Sig Gps to ‘Add PI to Setup’ [Reminds me of Magnum PI]
  • Fixed bugs:
    • Corrected a crash caused by nodeinfo.txt reporting 0 DS1 port licences instead of the expected “Unlicensed” in a v7 CCE (Thanks Mitsu-San!)
    • Added ‘not available’ where the NodeLicenseSKU & SoftwareBundled info isn’t present or can’t be read from NodeInfo.txt

v7.0.0B – 13th February 2018

  • Rearranged Transformation Tables so they display in alphabetical order (as they do in the Web UI). Thanks Rick Eveleigh for the suggestion!
  • Updated WriteSection to display ‘table is empty’ for those elements that exist but have no content. (Previously suppressed)
  • Implemented myriad improvements recommended by ISESteroids PSSharper, including THIRTEEN THOUSAND ” changed to ‘
  • Added new ‘constrain’ entries to Write-Section to reduce line-wrapping in Media Profiles & CAS Supp Service Profiles
  • Fixed bugs
      • – BRI ports were incorrectly being shown in the ‘Feature Licenses’ table and not ‘Port Licenses’. (Broken since last ‘fixed’ in 6.1)

    (It seems nodeinfo.txt calls BRI’s ‘BRI Channels’ if they’re *not* licenced, and ‘BRI Ports’ if they are, hence my confusion.)

    • – SBA section would sometimes incorrectly report “need nodeinfo” for $ASM_WindowsEthernetSecMac even when nodeinfo was provided
    • – Fixed broken error message in ‘Extract-FromArchive’ that failed to show the archive’s name if an Unzip failed
    • – Removed display of “Software Bundled” and related values from the License table if there’s no ASM
    • – With old firmware < v4, AD / DCs would incorrectly report Server Timeout as ” secs [5…15]”

v7.0.0A – 24th December 2017

  • Fixed bugs:
    • Forced TLS1.2 in the “Get-UpdateInfo” code, as my new website’s increased security was causing the auto-update code to fail
    • Removed “Cmdlet Binding” settings from “Get-UpdateInfo” for PSv2/Win7 support

v7.0.0 – 23rd December 2017

  • Added new bits in 7.0.0:
    • “Ethernet Port Redundancy” to Node Interfaces / Ports
    • “Emergency Services Configuration”
    • “Password Display” in Security / Users / Global Security Options
    • “Proxy Enabled” in Application Solution Module / ASM Configuration
  • Added new bits in SWeLite 7.0.0:
    • Added new “Proxy with local SRTP” to SIP Sig Gp Media Information
    • Changed the label of the above from “Audio Stream Mode” to “Supported Audio Modes”
    • Enabled display of “Video/Application Stream mode” in Routing Table entries / Media section
    • Reinstated display of “Node-Level SIP Settings”
    • Added new licence types “Video Sessions”, “High Session Capacity Enabled”, “Proxy Local SRTP”
    • Renamed “SIP Media Sessions” to “Virtual DSP Sessions” in the Current Licenses / Feature Licenses table
    • Changed Media System Configuration guidance text for “Number of Port Pairs” from “1..800” to “1..5000” & deleted “per interface”
    • Added IPv6, & reinstated display of “IP Addressing Mode” in Networking Interfaces / Logical Interfaces
    • Added Interface Name & Precedence to the ACL summary table (IPv4 & v6)
    • Reinstated display of “Host IP Version” in SIP Server Tables & “Proxy IP Version” in SIP Sig Gps
  • Added other new bits:
    • My modified version of Pat’s Get-UpdateInfo ( (Thanks Pat!)
    • Added a $BroadSoftFlag to the Licence table section to display “Not Licensed” if BroadSoft isn’t referenced in nodeinfo.txt (SweLite)
    • Added capture of “SWe Lite ID” from nodeinfo.txt & added to System / Node-Level Settings to show instead of “Node ID”
    • Added display of ASM (under Node Interfaces / Ports) – but it only shows if NodeInfo is available, as there’s no way to tell from symphonyconfig if it exists otherwise
  • Fixed bugs:
    • The ASM’s “Windows Factory Licence” was being reported incorrectly in System / Licensing / Current Licenses
    • “MSTP State” was being reported incorrectly in Node Interfaces / Ports
    • Fixed typo “Maxium” in IPv4 Access Control Lists
    • Suppressed display of “No Channel Available Override” in SIP Sig Gps in the Swe Lite
    • Suppressed display of “Skype/Lync Edge Server” values in Node-Level SIP Settings in the Swe Lite
    • Amended the SWeLite’s Tone Tables to only display Ringback and Congestion tones

v6.1.4B – 6th Nov 2017

  • Fixed bugs:
    • Added “Immediate Disconnect on Cause Code” to ISDN Sig Gp (which apparently snuck in under my radar in ~v5) – thank you Mitsu-San

v6.1.4A – 7th Oct 2017

  • Fixed bugs:
    • Added option 5 (“Direct”) to $CRMediaModeLookup & changed Call Routing to hide display of Transcoding & Media list if $route.IE.MediaMode = 5

v6.1.4 – 6th Oct 2017

  • Added new bits in 6.1.4:
    • Linked Signalling Groups
    • “Dtmf Signal To Noise” in Media Lists
    • “UserInfo Decode” in Node-Level ISP Settings (and associated $SIPUserInfoDecodeLookup)
  • Added other new bits:
    • Added display of “Additional WS2008R2 ASM License” & “Additional WS2012R2 ASM License” to the Feature Licences table
    • Stumbled upon some of the other ASM licence info in the Inventory section of nodeinfo.txt. Captured that into the Licences table
    • Changed “SaveAs” PDF section to “ExportAsFixedFormat” – the Table of Contents entries are now clickable (although not in all PDF readers)!
    • Added more error handling, & consolidated error reporting to new function “DumpErrToScreen”
  • Fixed bugs:
      Media List Profiles was incorrectly building to a $MediaListProfileCollection array, no longer used. Deleted it

v6.1.3 – 9th September 2017

  • Added new bits in 6.1.2:
    • Updated to new wording of the “Play Ringback” options in SIP Sig Gps + added new option “Alert on 180/183”
    • Added new “SDP Handling Preference” to SIP Server Profiles
  • Added new bits in 6.1.3:
    • No new config options appear to have been added in symphonyconfig.xml. Please let me know if you find any!!
  • Reinstated bits since added to the SWe Lite:
    • Updated Media / Media System Configuration to show MOH
    • Updated SIP Sg to show MOH & “Mapping Tables”
    • Reinstated display of the Protocols / DNS / DNS Table
    • Reinstated display of the “SIP to Q.850” & “Q.850 to SIP” Telephony Mapping Tables
  • Added other new bits:
    • Renamed the first NIC in the ASM to “Network Adapter *1* Configuration” (my emphasis here to show the change)
    • Improved the way the ASM is being reported. Added handling for the second NIC (but this only works if using a .tar or the “-IncludeNodeInfo” switch)
    • Added ” dB” suffix to Gain values in FXS, FXO ports & Media Lists
    • Tweaked the fixed column widths in the Node Interfaces / Ports table to stop wider values line-wrapping
    • Reworked the System / Licensing / Current Licences for the SWe Lite to correctly trap/capture a trial licence. (It’s still not perfect)
    • Added new FXO port countries United Arab Emirates, Yemen, “Other” & “Other European (TBR-21)” to the $FXSFXOCountryLookup
  • Fixed bugs:
    • FXO Ring Detection Threshold was being reported as 0, 1 or 2. Added “FXORingDetectLookup” to translate to 17/24/50V as per web GUI
    • “Proxy IP Version” element wasn’t displaying if a SIP Sig Gp’s “Outbound Proxy” is a hostname. (Previously not quite fixed in v6.1B)
    • SIP Sig Gp was incorrectly displaying a Tone Table line when Play Ringback was set to “Never”
    • Seriously: fixed a bug in handling of “LOGGER_SYSLOG_DEST” that would have only affected an SBC running v2-something, circa 2012?
    • The Logging Subsystems log level of “Default” was incorrectly showing as blank. Added to $LogLevelLookup to resolve
    • The SIP Server Priority of “None” was incorrectly showing as “0”

v6.1C – 6th May 2017

  • Added handling of “-Debug” switch to dump detailed error logging to screen

v6.1B : 28 March 2017

  • Added more SWe Lite config:
    • Corrected the LogicalInterfaces display – now “Networking Interfaces” in the SWe Lite. Suppressed IPv6 & ACLs. Added “Media Next Hop IP”
    • Suppressed the extraction of obsolete “SIP To Q.850” (and vv) data from XML – purely to suppress irrelevant messages to screen in verbose mode
    • Added new values to ACLs
    • Suppressed display of values currently not available/supported:
      – Bridge/Region Settings and MSTP values
      – QoE
      – SIP / Node-Level SIP Settings: Skype/Lync Edge Server
      – Media: MOH [R.I.P.]
      – Routing Table entries: Video/Application Stream mode
      – Sig Gp: QoE, MOH, Q.850 Mapping tables
      – DHCP Yes/No under System / Node-Level Settings
      – “Password Recovery” in Security / Users Global Security Options
      – Media / Media Lists: RTCP Mode, Gain Control & Passthrough / Tone Detection
      – TDM & DSP values in TCA Configuration
    • Suppress display of “Interop Mode” if SIP Sig Gp “Agent Type” = B2B-UA
    • Suppress inclusion of Node Level DNS Servers in the Protocols / DNS / DNS Table
  • Added “DHCP Options to Use” and “Use as Split DNS” to Logical Interfaces running as IP v4 with DHCP enabled. (Present since at least v5?)
  • Added “Node-Level Network Settings” = Static/Dynamic to System / Node-Level Settings (for non-SWe Lite platforms)
  • Renamed “IP Static Route Metric” to “Metric”
  • Suppressed display of (long-deprecated) “Subscription State Passthrough”. It looks to have gone with 4.0.0 b353.
  • Suppressed display of Presence Server status fields in SIP / Node-Level SIP Settings if Presence Destination is N/A or “None”
  • Suppressed display of “Allow Weak Cipher” in TLS Profiles (rather than stamp it as “deprecated this rls”)
  • Removed display of “Mask” from DHCP Pools
  • Added another Try/Catch to get Windows 7 / P$v2 to exit Word cleanly. It’s the dreaded intermittent “[ref]” requirement still haunting me!
  • Added “End of Document” text
  • Fixed bugs:
    • If set to DHCP, Logical Interfaces were incorrectly displaying Primary Address, Netmask and Configure Secondary Interface rows
    • Added “Other” option to the Protocols in Access Control Lists
    • IPv6 ACL table headings weren’t being reported correcly – IPv4 table headings were showing due to copy/paste error
    • “Proxy IP Version” element wasn’t displaying if a SIP Sig Gp’s “Outbound Proxy” is a hostname

v6.1A : 3 March 2017.

  • Fixed bugs:
    • Reverted the $word.quit($wdDoNotSaveChanges) added in 6.1: Word had no document open, so there was nothing to ‘NotSave’ and Word instead stayed open!

v6.1 : 28 February 2017.

  • Added the ability to specify a Word Template to base the output on & also permits a named style for the tables. (Thanks Hany)
  • Added initial compatibility for SweLite: will be further refined after GA
  • Added new “IncludeNodeInfo” switch & if you’ve NOT nominated a .tar file it will look for a “nodeInfo.txt” file in the same dir as the inputfile – Script will display an error to screen and continue if NodeInfo.txt is not found – Script will throw an error and abort if the Hostname in NodeInfo.txt differs to what’s reported from the XML. (We assume the user has mixed them up)
  • Updated Example text to show how you can batch a bunch of folders all with the exploded tar files in them
  • Added new variable “ReleaseBuild” to help discern between “” and “”
  • Added v6.1 support:
    • “Forked Call Answered Too Soon” in SIP Sig Gp
    • “Record Route Header” in SIP Profiles
    • “Timer J” in SIP Profiles
    • The removal of “AllowWeakCiphers” from TLS Profiles is now reported as “” (if ReleaseBuild -ge 457)
  • Added DHCP Static Clients
  • Added “Destination Type” to the Call Routing overview table
  • Added “Fax Tone Detection” to Media Lists
  • Added ACL In and ACL Forward to the Node Interfaces / Ports on the SBC 2000
  • Added $NetworkAdapterGigabitTimingLookup to Node Interfaces / Ports on the SBC 2000
  • Added “secs [1..30]” to the TLS Profiles / Handshake Inactivity Timeout value
  • Added “secs [5…15]” to the AD / Domain Controllers / Server Timeout value
  • Added “Negotiated Speed” and “Negotiated Duplexity” to the Ports / Ethernet table. They’re dynamic values not captured in the backups, but felt they needed to be displayed
  • Updated Call Routing table to report “Forking” and “Transcoding” as “Not Licenced” instead of “No”. (Requires .TAR file or NodeInfo.txt for licence data)
  • Updated Node Interfaces/Ports to suppress the display of T1/E1, FXS, FXO & BRI ports that might be physically equipped but not licenced. (Requires .TAR file or NodeInfo.txt for licence data)
  • Housekeeping: replaced discrete (legacy) “if -eq $null” tests with a call to TestForNull
  • Changed default wording of $MOHFilename from “N/A” to “Not Available” to reduce ambiguity. (The filename is only accessible from .tar)
  • Changed $TlsProfileIdLookup value for TCP/UDP from “” to reflect the on-screen “N/A”
  • Updated SIP Sg $SipNonceExpiryLookup value 0 from “Forever/Never” to “Forever”
  • Updated both $TimingConfigColumnTitles to remove the word “Recovery” from the title
  • Refined the close & quit code at the bottom: sometimes Word stays running in the background after a crash – Added the presumably redundant “wdDoNotSaveChanges” to $doc.Close and $word.Quit
  • Fixed bugs:
    • Fixed incorrect $IsdnAsn1ProtocolLookup values. (Thanks James)
    • Fax Profiles was incorrectly reporting Error Correction Mode. Changed lookup to $ReverseEnabledLookup to resolve
    • “Use Register as Keep Alive” was incorrectly showing in the SIP Sg table if SIP Mode = Local Registrar
    • “Node-Level SIP settings” was not being displayed. Reinstated & updated, capturing new “Skype/Lync Edge server” values
    • DHCP Pools found to be incorrectly reporting Lease Lifetime in seconds, but saying it’s minutes. Divided value from XML by 60 to resolve
    • Corrected handling of Ethernet 3 in the new SBC1k hardware. Was incorrectly showing as “VLAN 4042”
    • Corrected handling of all 4 Logical Ethernet interfaces in SBC2k hardware. they were incorrectly showing as “VLAN 403n”
    • “BRI Channels” weren’t being captured correctly in the licence table. I had incorrectly coded them as “BRI Ports”
    • $LicenceLine.Count/Trim loop has never worked: bad $i test masked the underlying , instead of ; separator bug. Don’t think this error has previously been visible
    • Translated Node Interfaces / Ports interface names from “lan1” to “Ethernet 1” to correctly reflect current on-screen display
    • “Node-Level SIP Settings” was not correctly reporting the presence server. Changed to the $SIPServerTablesLookup to resolve

v6.0 : September 2016

  • Added initial v6.0 support:
    • Added “Detect CNG” to $ActionSetActionLookup
    • Add Ipv6 Access Control Lists
    • Added HostIpVersion to SIP Server table
    • Added “Preferred IP version” to Auth & Directory Services / Active Directory / Domain Controllers table
    • Added “IP Addressing Mode” to Logical Interfaces
    • Added FXS port type for “Long Line” handling
  • Added new Transformation table type 38: “Called Free Phone Number”
  • Added “[1024..65535]” valid range detail to the RHS of the Outbound Proxy Port
  • Added the remainder of the “Logging Configuration” components. (Thank you Mitsu-San!)
  • Added all *non-default* SNMP trap entries (as these are the only ones captured in the backup file)
  • Added a CR so each SAN in a certificate is written to a new line
  • Changed Auth & Directory Services / Active Directory / Configuration & Domain Controllers to V-table
  • Changed ACLs to V-table
  • Updated System / Node-Level Settings label from “Enable DNS Forwarding” to “Enable DNS Service”
  • Rearranged “Protocols” & “SIP” so they now show in the file in the same order as on-screen
  • Added the ability to specify alternate background colours as attributes from the command-line (TitleColour & LabelColour). Thank you Sophie
  • Added new $MatchTypeLookupLong for new descriptions “(Must Match)” and “(Match One)” in Transformation Tables
  • Updated descriptions for $Q850DescriptionLookup
  • Updated $Q850DescriptionLookup formatting to new descriptions: from “17 – User Busy” to “17: User Busy”
  • Updated $SIPRegistrationTablesColumnTitles & $SIPAuthorisationsTablesColumnTitles to new descriptions: from “AOR…” to “Address of Record…”
  • Updated Node Interfaces / Ports title from “Port Name” to “Port ID” and changed to new “Port 7:1” display format
  • Added new SIP Sg Interop Mode appearances, including new $SipSgInteropModeLookup
  • Renamed input parameters Serial Number & Node ID to their current SBC titles “NodeID” and “HardwareID”
  • Updated SipSg for new Inbound/Outbound Static NAT values + added NAT Traversal (which becomes visible if InteropMode = Office365)
  • Revised how I name a blank MST Instance: changed from “Instance ID ” + Primary Key to “MST Instance ” + Instance ID
  • Moved “Relay Config” from System to the end of Node Interfaces
  • Renamed “Timing Config” and “Companding Law Config” to their new on-screen titles
  • Updated Auth & Directory Services / RADIUS / Configuration to new on-screen layout
  • Changed certificate dates to show in less ambiguous format “MMM dd, yyyy”
  • Rearranged tone table columns to Frequency 1, Amplitude 1, Frequency 2, Amplitude 2
  • Added a count test to the $SNMPData collation to suppress an unwanted heading in an SBC with no related content
  • Found the script would consolidate together two objects if they shared the same name and this introduced ambiguity when referenced in other locations:
    – Added new function “FixNullAndDuplicateDescriptions” to weed these out – also makes FixNullDecription redundant for these objects
    – Adds the index number in brackets after the name: e.g. “Passthrough Untouched (7)”
    – Applied to Translations & Transformation Tables
  • Fixed bugs:
    • A blank Outbound Proxy Port in the Sig Gp is captured in the XML as “0”. Updated to correctly show as blank in the table instead of 0
    • If you fed a .tar into the script, the Node ID and Hardware ID were swapped in Node-Level Settings
    • The Routing Table summary view would incorrectly show a “First Signaling Group” value for Rejected calls
    • A CAS Sig Grp of type E&M didn’t show the Assigned Channels
    • Found script has been incorrectly reporting the wrong value for FaxRelayFallback – changed to use the correct $ReverseEnabledLookup
    • $RadiusAccountingModeLookup was reporting “Active-Active” when it should have been “Active-StandBy” and vice-versa
    • Win7 / P$v2 was inexplicably skipping Node Interfaces / MSTP / MST Instances. Reconfigured & tested OK on both Win 7 & Win 10
    • SIP Sg “Video/Application Stream Mode” was incorrectly reporting as “Enabled/”Disabled”. Corrected to show
      – “<Unknown>” if we’ve read from an XML file instead of .tar & can’t determine the licence entitlement (which triggers display in the UI); – “Disabled” if there’s no video licence; and
      – “Proxy”/”Direct” as appropriate if it’s enabled.

v5.0.1: 25th December 2015

  • Removed some redundant code from the file formatting section
  • Removed redundant SipTrunkGroupLookup & related code from the “Initial parse of the config file”. (Dev code leaked accidentally into v5.0 rls)
  • Added extra debugging around the creation of the new $word object. Relocated Word constants higher in the code
  • Changed Certificates to V-table format & now capture all data
  • Changed write-progress “Writing to Word” to “Writing to ‘<filename>'”. (Invaluable when you’re running a batch)
  • If the InputFile is a .tar (and you have 7-Zip installed) the script now reads and captures:
    • The Name of the MOH file. (Shown in “Media System Configuration”)
    • The licence, Node ID and Serial Number from “nodeinfo.txt” (if it exists – old f/w doesn’t have it)
  • Fixed bugs:
    • Switzerland, Turkey & the UK were out of whack in the $FXSFXOCountryLookup. (Thank you Laurence E)
    • Win7 (P$v2) would crash on the “TestForNull $null” lines. Adding another null test inside the null test seemed to fix it!
    • Found the script might not document some content (e.g. media) in a ‘lighty-loaded’ SBC. (Flawed $null test of $sectionData)
    • Opening .tar with 7-Zip failed if there was a space in the path or filename. Changed $Arguments from Array to String & wrapped filenames in quotes

v5.0: 9th August 2015

  • Changed version numbering to align with the most recent version of SBC firmware supported
  • Added new “RedactIP” command-line switch for my government customers: replaces all IPv4 addresses with text
    • It’s a global find/replace, not specific to fields called “ip address”, so it may catch other text unintentionally
    • It fires on masks and other ‘n.n.n.n’ strings from to
    • It reuses the same dummy name for every instance of the same IP address in the file
  • Updated the layout of Security / TLS Profiles:
    • Moved “Mutual Authentication” to Common Attributes at the top
    • Removed display of “Fallback Compatible Mode”
    • “Validate Server FQDN” now only shows if “Verify Peer Server Certificate” is Enabled
  • Added v5.0 support, including:
    • New ‘presence’ Input and Output types to Transformation Tables
    • “Maximum Call Duration” & “Min MOS Threshold” to Route entries
    • “Authorization on Refresh” & “Session URI Validation” to SIP Server table
    • Option “Path” & “Diagnostics Header” to SIP Profiles
    • SIP:
    • – “NAT Qualified Prefix Tables”
    • – “Trunk Groups”
    • – “Node level SIP settings”
    • SIP Sig Gps:
    • – Add “Inbound NAT traversal” section
    • – Add “Play Congestion Tone”, “Allow Refresh SDP” & “Call Proceeding Timer” options
    • Change display of Media Information “AudioFax” Stream mode: only if the backup file contains “RTPDirectMode” (new in v5.0)
    • Added “Link Monitors” and “Skype / Lync CAC Profiles” to Protocols / IP / Network Monitoring
    • Added Split DNS & DNS table under Protocols / IP
  • Fixed bugs:
    • Changed RegisterKeepAlive in SIP Sg as per SYM-19541 note in v5.0 list of “Updates and Fixes”
    • Suppressed display of “UA Header” in SIP Profiles if “Trusted Interface” is Disabled
    • Added Calling (and Called) SubAddress/Number and Destination Trunk Group to Transformation Tables Lookup, and the latter to the handling
    • The TLS Profiles / TLS Client Cipher “Sequence” was only reporting the first in the list: legacy config. Now correctly reporting the entire list

v2.8: 13th July 2015 – HAPPY SECOND BIRTHDAY!

  • Sonus has added more info to the drop-down text in Message Translations. Revised the hashtables accordingly
  • Also added new “3” = “Proceeding” to $MsgXlatMsgTypeLookup
  • Added “Dynamic Refresh” to the IP Hosts table
  • Added display of “Reset SRTP Rollover Counter” if “Crypto Profile ID” != “None” in Media Lists
  • Added a space after the comma in the DC search scope to help Word line-wrapping
  • Added Ring Validation and related values to FXO ports table. (Thanks @paulsalmon77)
  • Reduced some of the header widths in WriteSection (essentially to fit the extra FXO port info above)
  • Moved “Fallback to Passthrough” to end of Fax Media Profiles and added “Super G3 to G3 Fallback”
  • Added “Termination” to BRI ports table. (Thanks @Luca_Vitali)
  • Moved display of “Retry Non-Stale Nonce” in SIP Server tables. (Currently showing on-screen in Web UI incorrectly. SYM-19797 raised)
  • Added function “TestForNull” & consolidated all simple tests to now call it & populate from the hashtable as appropriate
  • Fixed bugs:
    • SIP Server Tables were incorrectly showing the “RecoverFrequency and not the “ReuseTimeout” for Connection Reuse / Timeout Limit
    • A SIP Sg with Signaling/Media Private or Source IP of “Auto” was showing as blank. Added $PortToIPAddressLookup “” = “Auto”

v2.7: 11 June 2015

  • *IF* you have 7-zip installed ( “Inputfile” can now be the backup archive: – no need to manually extract ‘symphonyconfig.xml’ – just specify the .tar backup file. The script will extract symphonyconfig.xml to memory and do its thing
  • Added initial v4.1 support, including:
    • ‘FQDN in Contact Header’ to SIP Profile Tables
    • ‘Use Register as Keep Alive’ in SIP Sg
    • ‘Incoming Immediate’ if Loop Start Type is Reverse Battery in CAS Signaling Profiles
  • Fixed bugs / improved:
    • Updated input and outfile file handling to support relative paths. (Thanks Mike!)
    • With apologies and thanks to my users in non-English locales: – Added support for exotic characters by adding “-encoding UTF8” to “get-content $InputFile”. (Thanks Lasse!) – I’ve replaced the references to the English standard Styles with their enumerations. (Refer – LET ME KNOW if you’d like me to add a command-line parameter so you can name specific styles to use instead of the standard Headings
  • Added an ugly bandaid to the ongoing “Error saving new Word document … Do not use [ref]” saga. If it fails, I do as it says: try again without [ref]!
  • Converted CAS Signaling profiles (FXS, FXO, E&M, R2) to V-table. These now capture *everything*
  • Whoops! Replaced all ” m/s” text suffixes with the correct ” ms”. Blushing at how I could have missed that…
  • Improved global ‘catch’ handling. If we crash with “Key cannot be null” (back-compat error) the offending line number is written to screen
  • Found several CAS SG types weren’t showing ‘Play Ringback’ in the table
  • TLS Profiles ‘Allow Weak Cipher’ was reporting 0/1 instead of Dis/Enbl
  • Noticed the g/w now refers to ‘Overlap Send/Receive *Mode*’ in the ISDN SG. Updated the text to align
  • Added some fixups for Win10: found $wdSeekMainDocument wasn’t declared(!), & range.text wanted “.ToString()” (Search “Win10” in code)

v2.6: 8 February 2015

  • Added initial v4.0 support, including:
    • Capturing the ‘platform type’ (new in the config file). Added to the cover page
    • SIP Sg ‘video proxy mode’
    • SIP Sg ‘Agent Type’ & related
    • CAS Sg E&M ‘Call Information Format’
    • Call Route entry ‘Video mode’
    • SIP Profiles ‘Digit Transmission Preference’
    • Added Global Security Options to ‘Security/Users’
  • Added initial v4.1 support, including:
    • Node-Level Settings / Enable DNS forwarding
    • Changes to Security / TLS Profiles
  • Fixed bugs where:
    • ‘Calling Numbering Plan’ wasn’t being correctly decoded in the transformation tables (thanks Lasse!)
    • Script crashed if a previous version’s NIC (NodeHardware/LogicalInterface) config was present in the backup file (thanks Lasse!). (A Sonus bug! SYM-16535/SYM-18340)
    • If in the TLS Profile ‘Mutual Authentication’ is Disabled, ‘Validate Client FQDN’ shows a value where it should not
    • An empty SBA table would be included in the document if there’s no ASM/SBA equipped in the appliance
    • SNMP ‘Management Addresses’ were always reporting Enabled. (Was reading the wrong element from xml)
    • Internal VLANs were showing as “Logical Interfaces”. Suppressed the display of all VLAN IDs with an XML “.value” > 14000
    • Script crashed with “Cannot index into a null array” if empty object passed to “foreach ($section in $Sections)” loop. (Specific to $PSv2/Win7)
    • TLS version Client Cipher has ALWAYS been reporting the wrong value: I was reading the TLS version from file, not client Cipher
  • Also:
    • Added AD User Groups & RADIUS User Class to ‘Security/Remote Auth Permissions’. (NB: Users are local to the box and are not backed-up)
    • Added RADIUS Configuration & Servers under ‘Auth and Directory Services’
    • Moved ‘certificates’ to under Security & split out into separate tables for ‘my’ & ‘trusted’
    • Added spaces before every ‘/’ in certificate tables – allows word-wrap and I think improves legibility. (Let me know if you disagree!)
    • Changed Media System config to V-table layout
    • Reordered several sections so they now show in the file in the same order as on-screen:
    • Media, Node Interfaces, System and SIP. Please let me know if I got any of these wrong – I’m flying blind in some cases (e.g. BRI)
    • Added Region Settings, MSTP & VLANs (under ‘Node Interfaces/Bridge’)
    • Changed Network Adapters to V-table layout (adding more content)
    • Removed a warning that fired unnecessarily when the channels in a ‘Partial’ ISDN Sig Gp jumped over the D-channel. (Was a leftover from development)
    • Added TCA Configuration under ‘SNMP/Alarms’
    • Renamed Logical Interfaces from “local n” to “Loopback n”
    • Updated the “$id” string at milestones at the end of the script to aid debugging. (The current value of $id is output if we crash)
    • Changed TLS Profiles to V-table layout (adding more content)
    • Where a Media Profile has its “VoiceRateInBitsPerSecond” stored as a zero, I now replace this with “not specified: inherent”
    • Suppressed the display of ASM as a Node Interface / Port if there’s no ASM physically present
    • With v2.1 f/w, the five default Bridge entries incorrectly show consolidated into five identical table rows
    • I don’t think v1 SIP Signaling Groups are being decoded correctly. I’m hoping that there remain *NO* gateways still running v1 anywhere on the planet
    • Some Norwegian characters are being incorrectly misrepresented in the Word/PDF files
    • For some users the script crashes with an “Error saving new Word document … Do not use [ref]” error. Try as I might, I just can’t dupe this bugger, sorry

v2.5: 25th September 2014

  • Appended “-verbose:$false” to when Word is launched (search “$word =”) to suppress unwanted Verbose text
  • Added ‘trimstart’ to input and output filenames to strip an unwanted “.\” if the user has Tabbed to select the files
  • Added “-landscape” switch. If run with this, the entire document will be created in landscape

v2.4: 11th July 2014

  • Nailed “Cannot index into a null array” bug with new “if $SectionData -eq $null” test. (Specific to $PSv2/Win7)
  • Added test for “if $SIPProfile.IE.RefreshMethod -eq $null” – gone from XML in 3.1.1b290
  • Corrected where if “$SIPgroup.IE.RTPMode” doesn’t exist, SIP SG’s don’t show Media, Ringback & MOH
  • Changed the way I was reading $release from XML. ($PSv2/Win7 wasn’t capturing it)

v2.3: 22nd April 2014 – the Lasse & Arran update. (Not publicly released)

  • (Seems I’ve gone all Android and each update needs some sort of codename).
  • Thanks Lasse for pointing out I’d overlooked Media Lists. These are now captured in their entirety.

v2.2: 22nd April 2014 – the John A Cook Special Edition. (Not publicly released)

  • Added catch and write-host lines to output the cause of fatal errors on-screen
  • Added extra “($value[$i] -eq $null)” test into WriteSectionVertically to trap occasional strange crashes
  • Added missing “Do” PARAMETER description to the header (overlooked in the 2.1 release)

v2.1 – 2nd April 2014

  • Updated SIP Server tables to show EVERYTHING
  • Updated Call Route tables to show EVERYTHING
  • Fixed bug where SIP Servers weren’t showing at all! (Was reinitialising $AllSipData inappropriately)
  • Added “-do” command-line switch to select specific output subsets – great for quick analysis of part of the config
  • Deleted $SipServerTablesMonitorLookup – no longer required
  • Added prefix of “16 – ” missing from that entry in the Q850DescriptionLookup
  • Removed redundant Cause Code prefix text from Action Config when $ActionConfig.IE.Action = “3”
  • Appended “(SIP)” to the front of the Sig Gp names. Ditto for ISDN and CAS Sig Gps
  • Tightened some column widths to improve layout (search “constrain”)
  • Renamed Fax Media Profiles column title “Fax relay fallback” to “Fallback to Passthrough”
  • Fixed bug in SIP Sg handling RTP Proxy Mode : was incorrectly writing to “SIPSgL2” instead of “SIPSgR2”
  • Cleaned up some handling in older firmware (~v1.8 – 2.1):
    • SIP Sg handling Remote Hosts and Masks was writing the blank/null entries to screen with “<n/a>”. No longer
    • SIP Sg handling Message Manipulation now correctly reports n/a instead of Enabled with no following content
    • ISDN Sg handling was incorrectly reporting ISDN Fractional = Yes if firmware pre-dated addition of this feature
    • SIP & ISDN Sg showed “Call Setup Response Timer” as blank when it didn’t exist. Now correctly reports n/a
    • SIP Sg showed “Registrar TTL” as blank when it didn’t exist. Now correctly reports n/a
    • CAS Sg showed “Caller ID Privacy Signaling” as blank when it didn’t exist. Now correctly reports n/a
    • SIP Profile showed “Transport Timeout Timer” as blank when it didn’t exist. Now correctly reports n/a
  • Whoops: realised that Translation Tables weren’t being shown in their right sequence. (Seriously, are there any of these still in operation?)
  • Set TimingConfig / Primary & Secondary Clock Recovery Port to show “<n/a>” if Tx Clock Source = System. (Both were prev just blank in some scenarios)

v2.0BETA – 9th February 2014

  • Renamed “Domain Controller” to “IP Address / FQDN” in Active Directory / Domain Controllers table, and reordered.
  • Fixed typo in $Q850DescriptionLookup – 127
  • Fixed bug in Action Config Table. The action “Route call, Await Connect Timer” was being reported as simply “Route Call”
  • Fixed bad entries in $SipSgMOHLookup – was reporting incorrect values
  • Fixed CAS R2/MFC Signaling Profiles. They were reporting MF and DTMF signaling the wrong way ’round
  • Fixed CAS E&M: DTMF on, off & inter-digit times weren’t showing correctly
  • Added missing TLS version lookup to TLS Profiles table. Renamed to “Client Cipher”
  • Removed $SipSgEarly183Lookup – was reporting incorrect values. Now using $EnableLookup instead
  • Changed entry 0 in $SipCredentialsTableLookup & $SipRegistrationTableLookup from “<n/a>” to “None”
  • Corrected case of AOR in$SIPRegistrationTablesColumnTitles
  • Created new “Type of AOR” lookup ($AORTypeLookup) for SIP Registration Tables
  • Added new columns to Remote Authorization Tables for “From URI User Match” and “Match Regex”, and new lookup $RemoteAuthFromURILookup
  • Added sections for SNMP, IP/Hosts, IP/Mirroring, SIP/LocalRegistrars, SIP/MessageManipulation/ConditionRuleTables, SIP/MessageManipulation/MessageRuleTables, QoE (new in 3.1)
  • Added Access Control Lists (thanks for the code Ben!)
  • Reworked Signaling Groups, SIP Profiles (and others) into new ‘vertical’ tables, with ALL information captured
  • Added optional Serial & NodeID parameters – specify them at runtime and the script will embed them in the “SystemNet” table
  • Structure overhaul: Re-ordered writing to Word to reflect the order in the gateway’s navigation menu (rather than the order in the XML file). Neatens progress bar count too.
  • Changed colour-scheme to green to reflect Sonus on-screen look. [If you hate it that much let me know and I’ll add a switch to revert to grey/gray]
  • Removed “Enabled” columns for objects that the user has no ability to disable
  • Added function FixNullDecription to better manage any object that was created without a title/description
  • Removed “Table n” from the table descriptions
  • Signed by my new DigiCert code-signing cert – no need to lower the ExecutionPolicy all the way to “Unrestricted””

v1.1 – 4th November 2013

  • Corrected a bug where the Media List Profiles table was incorrectly reporting the Enable/Disable status for Dead Call Suppression & Silence Suppression. (Thanks Mike).
  • Added “$ReverseEnabledLookup” to use for parameters with inverted Enbl/Disbl values.
  • Added “1” = “RTCP-XR” to $MediaRTCPModeLookup. (The Media List Profiles table previously showed “RTCP Mode” as blank if it was set to RTCP-XR.

v1.0 – 2nd July 2013

  • This is the initial release. You’re sure to find a few bugs I’ve not yet squashed.

– G.


  1. Thanks for this awesome tool.

    Can I make a request? That the Transformation Tables (& call routes etc) are alpha sorted? Not the entries in the Word tables themselves (as obvs the order is important to preserve), but each TT itself.

    That’s it!



  2. Wow, that was easy! It will be in the next release. If you can’t wait, add this after the “}” on line 6137 (in v7.0.0A):

    $TransformationData = $TransformationData | Sort-Object @{Expression={$_[0]}; Ascending=$True}

    The new code will sit between the two existing closing braces that appear immediately before “#———- CALL ROUTES ————”

    Thanks again for the suggestion! Keep them coming.

    – G.

Leave a Reply

Your email address will not be published. Required fields are marked *

... and please just confirm for me that you're not a bot first: Time limit is exhausted. Please reload the CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.