buildMacInfoJson.ps1

function convertUTCHours {
    param (
        [Parameter(Mandatory = $true)][Int32] $UTCOffHours
    )

    #We need to check to see if the absolute value of this is < 10
    #If so, prepend a 0 to it in a way that deals with the potential negative number
    if([System.Math]::Abs($UTCOffHours) -lt 10) {
        if ($UTCOffHours.ToString().StartsWith('-')) {
            [string]$UTCOffHours = '-0' + [System.Math]::Abs($UTCOffHours)
        }
    } else {
        #this just converts it to a string
        [string]$UTCOffHours = $UTCOffHours
    }
    return $UTCOffHours
}

function convertUTCMinutesSeconds {
    param (
        [Parameter(Mandatory = $true)][Int32] $UTCParam
    )

    #This works with minutes or seconds, and just prepends a 0 to the string version of the int
    #that's passed if < 10, and if not, just coerces it to a string and returns it
    if ([System.Math]::Abs($UTCParam) -lt 10) {
        [string]$UTCParam = '0' + [System.Math]::Abs($UTCParam)
    } else {
        [string]$UTCParam = $UTCParam
    }
    return $UTCParam
}

function buildJsonOutput {
    param (
        [Parameter(Mandatory = $true)][System.Collections.Specialized.OrderedDictionary] $macInfoList
    )

    $deblankedList = [ordered]@{}

    #remove blanks from hashtable. We can't modify the hashtable we're iterating through, so we create a second one
    foreach ($entry in $macInfoList.GetEnumerator()) {    
        #blank entries all start with a space
        if (!($entry.Key.StartsWith(' '))) {
            # add to new hashtable
            $deblankedList.Add($entry.Key,$entry.Value)
        }
    }

    $UTCOffHours = convertUTCHours -UTCOffHours $deblankedList.UTCOffset.Hours
    $UTCOffMins = convertUTCMinutesSeconds -UTCParam $deblankedList.UTCOffset.Minutes
    $UTCOffSeconds = convertUTCMinutesSeconds -UTCParam $deblankedList.UTCOffset.Seconds

    $newUTCOffset = $UTCOffHours + ":" + $UTCOffMins + ":" + $UTCOffSeconds
    $deblankedList.UTCOffset = $newUTCOffset

    $jsonMacInfo = ConvertTo-Json -InputObject @{
        $deblankedList.Keys[0]=@{
            $deblankedList.Keys[1]=$deblankedList.Values[1]
            $deblankedList.Keys[2]=$deblankedList.Values[2]
            $deblankedList.Keys[3]=$deblankedList.Values[3]
            $deblankedList.Keys[4]=$deblankedList.Values[4]
            $deblankedList.Keys[5]=$deblankedList.Values[5]
        }

        $deblankedList.Keys[6]=@{
            $deblankedList.Keys[7]=$deblankedList.Values[7]
            $deblankedList.Keys[8]=$deblankedList.Values[8]
            $deblankedList.Keys[9]=$deblankedList.Values[9]
            $deblankedList.Keys[10]=$deblankedList.Values[10]
            $deblankedList.Keys[11]=$deblankedList.Values[11]
            $deblankedList.Keys[12]=$deblankedList.Values[12]
            $deblankedList.Keys[13]=$deblankedList.Values[13]
            $deblankedList.Keys[14]=$deblankedList.Values[14]
        }

        $deblankedList.Keys[15]=@{
            $deblankedList.Keys[16]=$deblankedList.Values[16]
            $deblankedList.Keys[17]=$deblankedList.Values[17]
            $deblankedList.Keys[18]=$deblankedList.Values[18]
            $deblankedList.Keys[19]=$deblankedList.Values[19]
            $deblankedList.Keys[20]=$deblankedList.Values[20]
            $deblankedList.Keys[21]=$deblankedList.Values[21]
        }

        $deblankedList.Keys[22]=@{
            $deblankedList.Keys[23]=$deblankedList.Values[23]
            $deblankedList.Keys[24]=$deblankedList.Values[24]
            $deblankedList.Keys[25]=$deblankedList.Values[25]
            $deblankedList.Keys[26]=$deblankedList.Values[26]
            $deblankedList.Keys[27]=$deblankedList.Values[27]
            $deblankedList.Keys[28]=$deblankedList.Values[28]
            $deblankedList.Keys[29]=$deblankedList.Values[29]
            $deblankedList.Keys[30]=$deblankedList.Values[30]
            $deblankedList.Keys[31]=$deblankedList.Values[31]
        }

        $deblankedList.Keys[32]=@{
            $deblankedList.Keys[33]=$deblankedList.Values[33]
            $deblankedList.Keys[34]=$deblankedList.Values[34]
            $deblankedList.Keys[35]=$deblankedList.Values[35]
            $deblankedList.Keys[36]=$deblankedList.Values[36]
            $deblankedList.Keys[37]=$deblankedList.Values[37]
            $deblankedList.Keys[38]=$deblankedList.Values[38]
            $deblankedList.Keys[39]=$deblankedList.Values[39]
            $deblankedList.Keys[40]=$deblankedList.Values[40]
            $deblankedList.Keys[41]=$deblankedList.Values[41]
        }

        $deblankedList.Keys[42]=@{
            $deblankedList.Keys[43]=$deblankedList.Values[43]
            $deblankedList.Keys[44]=$deblankedList.Values[44]
            $deblankedList.Keys[45]=$deblankedList.Values[45]
            $deblankedList.Keys[46]=$deblankedList.Values[46]
        }

        $deblankedList.Keys[47]=@{
            $deblankedList.Keys[48]=$deblankedList.Values[48]
            $deblankedList.Keys[49]=$deblankedList.Values[49]
            $deblankedList.Keys[50]=$deblankedList.Values[50]
        }

        $deblankedList.Keys[51]=@{
            $deblankedList.Keys[52]=$deblankedList.Values[52]
            $deblankedList.Keys[53]=$deblankedList.Values[53]
            $deblankedList.Keys[54]=$deblankedList.Values[54]
            $deblankedList.Keys[55]=$deblankedList.Values[55]
        }

        $deblankedList.Keys[56]=@{
            $deblankedList.Keys[57]=$deblankedList.Values[57]
            $deblankedList.Keys[58]=$deblankedList.Values[58]
            $deblankedList.Keys[59]=$deblankedList.Values[59]
        }

        $deblankedList.Keys[60]=@{
            $deblankedList.Keys[61]=$deblankedList.Values[61]
            $deblankedList.Keys[62]=$deblankedList.Values[62]
        }

        $deblankedList.Keys[63]=@{
            $deblankedList.Keys[64]=$deblankedList.Values[64]
            $deblankedList.Keys[65]=$deblankedList.Values[65]
        }

        $deblankedList.Keys[66]=@{
            $deblankedList.Keys[67]=$deblankedList.Values[67]
            $deblankedList.Keys[68]=$deblankedList.Values[68]
            $deblankedList.Keys[69]=$deblankedList.Values[69]
            $deblankedList.Keys[70]=$deblankedList.Values[70]
            $deblankedList.Keys[71]=$deblankedList.Values[71]
            $deblankedList.Keys[72]=$deblankedList.Values[72]
            $deblankedList.Keys[73]=$deblankedList.Values[73]
            $deblankedList.Keys[74]=$deblankedList.Values[74]
            $deblankedList.Keys[75]=$deblankedList.Values[75]
            $deblankedList.Keys[76]=$deblankedList.Values[76]
        }

        $deblankedList.Keys[77]=@{
            $deblankedList.Keys[78]=$deblankedList.Values[78]
            $deblankedList.Keys[79]=$deblankedList.Values[79]
            $deblankedList.Keys[80]=$deblankedList.Values[80]
            $deblankedList.Keys[81]=$deblankedList.Values[81]
            $deblankedList.Keys[82]=$deblankedList.Values[82]
            $deblankedList.Keys[83]=$deblankedList.Values[83]
            $deblankedList.Keys[84]=$deblankedList.Values[84]
            $deblankedList.Keys[85]=$deblankedList.Values[85]
            $deblankedList.Keys[86]=$deblankedList.Values[86]
            $deblankedList.Keys[87]=$deblankedList.Values[87]
        }

        $deblankedList.Keys[88]=@{
            $deblankedList.Keys[89]=$deblankedList.Values[89]
            $deblankedList.Keys[90]=$deblankedList.Values[90]
            $deblankedList.Keys[91]=$deblankedList.Values[91]
            $deblankedList.Keys[92]=$deblankedList.Values[92]
            $deblankedList.Keys[93]=$deblankedList.Values[93]
            $deblankedList.Keys[94]=$deblankedList.Values[94]
            $deblankedList.Keys[95]=$deblankedList.Values[95]
            $deblankedList.Keys[96]=$deblankedList.Values[96]
            $deblankedList.Keys[97]=$deblankedList.Values[97]
            $deblankedList.Keys[98]=$deblankedList.Values[98]
            $deblankedList.Keys[99]=$deblankedList.Values[99]
        }

        $deblankedList.Keys[100]=@{
            $deblankedList.Keys[101]=$deblankedList.Values[101]
            $deblankedList.Keys[102]=$deblankedList.Values[102]
            $deblankedList.Keys[103]=$deblankedList.Values[103]
            $deblankedList.Keys[104]=$deblankedList.Values[104]
        }

        $deblankedList.Keys[105]=@{
            $deblankedList.Keys[106]=$deblankedList.Values[106]
            $deblankedList.Keys[107]=$deblankedList.Values[107]
            $deblankedList.Keys[108]=$deblankedList.Values[108]
        }

        $deblankedList.Keys[109]=@{
            $deblankedList.Keys[110]=$deblankedList.Values[110]
            $deblankedList.Keys[111]=$deblankedList.Values[111]
            $deblankedList.Keys[112]=$deblankedList.Values[112]
            $deblankedList.Keys[113]=$deblankedList.Values[113]
            $deblankedList.Keys[114]=$deblankedList.Values[114]
        }

        $deblankedList.Keys[115]=@{
            $deblankedList.Keys[116]=$deblankedList.Values[116]
        }

        $deblankedList.Keys[117]=@{
            $deblankedList.Keys[118]=$deblankedList.Values[118]
            $deblankedList.Keys[119]=$deblankedList.Values[119]
        }

        $deblankedList.Keys[120]=@{
            $deblankedList.Keys[121]=$deblankedList.Values[121]
            $deblankedList.Keys[122]=$deblankedList.Values[122]
            $deblankedList.Keys[123]=$deblankedList.Values[123]
            $deblankedList.Keys[124]=$deblankedList.Values[124]
            $deblankedList.Keys[125]=$deblankedList.Values[125]
            $deblankedList.Keys[126]=$deblankedList.Values[126]
            $deblankedList.Keys[127]=$deblankedList.Values[127]
            $deblankedList.Keys[128]=$deblankedList.Values[128]
        }

        $deblankedList.Keys[129]=@{
            $deblankedList.Keys[130]=$deblankedList.Values[130]
            $deblankedList.Keys[131]=$deblankedList.Values[132]
            $deblankedList.Keys[132]=$deblankedList.Values[132]
        }
    }

    return $jsonMacInfo
}

# SIG # Begin signature block
# MIIMgQYJKoZIhvcNAQcCoIIMcjCCDG4CAQMxDTALBglghkgBZQMEAgEwewYKKwYB
# BAGCNwIBBKBtBGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD21QE36zpot0N+
# Rb/MbA/aP05zz09ApDeFtzLS0OuswqCCCawwggQEMIIC7KADAgECAggYeqmowpYh
# DDANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUg
# SW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAU
# BgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMTIwMjAxMjIxMjE1WhcNMjcwMjAxMjIx
# MjE1WjB5MS0wKwYDVQQDDCREZXZlbG9wZXIgSUQgQ2VydGlmaWNhdGlvbiBBdXRo
# b3JpdHkxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMw
# EQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAIl2TwZbmkHupSMrAqNf13M/wDWwi4QKPwYkf6eVP+tP
# DpOvtA7QyD7lbRizH+iJR7/XCQjk/1aYKRXnlJ25NaMKzbTA4eJg9MrsKXhFaWlg
# a1+KkvyeI+Y6wiKzMU8cuvK2NFlC7rCpAgMYkQS2s3guMx+ARQ1Fb7sOWlt/OufY
# CNcLDjJt+4Y25GyrxBGKcIQmqp9E0fG4xnuUF5tI9wtYFrojxZ8VOX7KXcMyXw/g
# Un9A6r6sCGSVW8kanOWAyh9qRBxsPsSwJh8d7HuvXqBqPUepWBIxPyB2KG0dHLDC
# ThFpJovL1tARgslOD/FWdNDZCEtmeKKrrKfi0kyHWckCAwEAAaOBpjCBozAdBgNV
# HQ4EFgQUVxftos/cfJihEOD8voctLPLjF1QwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
# HSMEGDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjAuBgNVHR8EJzAlMCOgIaAfhh1o
# dHRwOi8vY3JsLmFwcGxlLmNvbS9yb290LmNybDAOBgNVHQ8BAf8EBAMCAYYwEAYK
# KoZIhvdjZAYCBgQCBQAwDQYJKoZIhvcNAQELBQADggEBAEI5dGuh3MakjzcqjLMd
# CkS8lSx/vFm4rGH7B5CSMrnUvzvBUDlqRHSi7FsfcOWq3UtsHCNxLV/RxZO+7puK
# cGWCnRbjGhAXiS2ozf0MeFhJDCh/M+4Aehu0dqy2tbtP36gbncgZl0oLVmcvwj62
# s8SDOvB3bXTELiNR7pqlA29g9KVIpwbCu1riHx9GRX7kl/UnELcgInJvctrGUHXF
# PSWPXaMA6Z82jEg5j7M76pCALpWaYPR4zvQOClM+ovpP2B6uhJWNMrxWTYnpeBjg
# rJpCunpGG4Siic4U6IjRWIv2rlbELAUqRa8L2UupAg80rIjHYVWJRMkncwfuguVO
# 9XAwggWgMIIEiKADAgECAgg4/t1QcpKr9DANBgkqhkiG9w0BAQsFADB5MS0wKwYD
# VQQDDCREZXZlbG9wZXIgSUQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJjAkBgNV
# BAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBs
# ZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yNTA1MjAxNzI2MzZaFw0yNzAyMDEyMjEy
# MTVaMIGPMRowGAYKCZImiZPyLGQBAQwKNzk2NDg4Vkc5NTE6MDgGA1UEAwwxRGV2
# ZWxvcGVyIElEIEFwcGxpY2F0aW9uOiBKb2huIFdlbGNoICg3OTY0ODhWRzk1KTET
# MBEGA1UECwwKNzk2NDg4Vkc5NTETMBEGA1UECgwKSm9obiBXZWxjaDELMAkGA1UE
# BhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDG5iTyi/Llb8QR
# mKSVEMaSkIAyXssehEKC1nJKp9ZkaRLxan/q6B7JeWzTNa6XCBG3Pf4Dz0IQnU6U
# qDsPFYpwhRtS14CNVnwmcMJeJ/hy6MW++cBymq9xEZD80c69muLZmYr2KLKFu6WJ
# nPK4JvYNqZ5Iug7UthcVeZBTdCDHCsVui8WMrFwDe112hqHFb9YiwrZF3w4v3G7X
# cU6KO6oiD79C26xelHqAjuPZUxHbiJDhrgI2xbr4phtyukq/aaUyvOEGRuzr9ViT
# imxjMH0Dzd3eYQNyZ/OgpBTg/u5bt4c4L+ivLNWpkImm5NLByjPWj2Rgxex9q7gu
# d8eXX5PBAgMBAAGjggITMIICDzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFFcX
# 7aLP3HyYoRDg/L6HLSzy4xdUMEAGCCsGAQUFBwEBBDQwMjAwBggrBgEFBQcwAYYk
# aHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy1kZXZpZDA2MIIBHQYDVR0gBIIB
# FDCCARAwggEMBgkqhkiG92NkBQEwgf4wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFu
# Y2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2Nl
# cHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5k
# IGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRp
# ZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNgYIKwYBBQUHAgEWKmh0dHA6
# Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5LzAWBgNVHSUBAf8E
# DDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU+vpKLJ3aUHMJjwgzoV2hMj3fKX8wDgYD
# VR0PAQH/BAQDAgeAMB8GCiqGSIb3Y2QGASEEEQwPMjAxOTAyMDYwMDAwMDBaMBMG
# CiqGSIb3Y2QGAQ0BAf8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQAV1Oma8FyEr7uz
# iO/jzM9Zv+vfk6USv3P/G444JO51tYK9pfyOBIw1bAQriiW4AmUbgYsOTPBRDaSn
# MuZBi/srL1G+mXngoiqaP4sdt3MgCt/mJTmz/PBxVZgLk8XKxZR8C6GBKX9vVSTR
# oAbwake9HBhJe4RnNoELGuXk62b1QKnkKDKUizZtuAib13yDSr5bN0KxezeGmySg
# t1maDJ+qCYpQUMB3Nls7taCozh4lsl7xtvc/2A8l2Nf9pcT0GGpkZdpf1WwUqm6O
# 3fUQ7+GCO2ctz8CfUchecgcBDMP40oTKDsW7d8oLP5LU8YK8lgoAzUeHA5JMscLU
# Ud176XtfMYICKzCCAicCAQEwgYUweTEtMCsGA1UEAwwkRGV2ZWxvcGVyIElEIENl
# cnRpZmljYXRpb24gQXV0aG9yaXR5MSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0
# aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMC
# CDj+3VBykqv0MAsGCWCGSAFlAwQCAaB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqG
# SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
# AgEVMC8GCSqGSIb3DQEJBDEiBCDsWLTXuhC/QcsIpqFECkHpcHH44j4qR9gJmfxY
# sUBT4zALBgkqhkiG9w0BAQEEggEAWFGcgxafQR0gGJdZoLtpfl8ZRaF2p28Pt1Yv
# 8/EZPDyWw49rdaPlMA04QrBJjsW3/5JrG/yHNvyTRal8hnizjWUPm7N1tDBbgqUz
# B1mvLrKVsx2EP6uZp/avnSVjhrkV52HCSy0xT7LwLgav9dpY2RwPIIJvJHRiYiNq
# jvDU+JMs8rbjVgazejjHxrkK40+RmcahCvcZaox0UpmI75xbh4Xeu2jNwUtLDMgN
# zmiiSKnhlD5hsweR6vQx//NkD0/Z1h18+hOZj2ena/Cf7SLjD8zUMwukYXs1tGeS
# wKkOKg2p6VDpE+AvT/5MsDlqdSyhQh77itp4jVl0uRuomj3T6Q==
# SIG # End signature block