# other powershell snmp information
# https://solvedbypowershell.blogspot.com/2014/12/powershell-using-snmp-for-html-network.html
# https://www.powershellgallery.com/packages/Proxx.SNMP/1.0.1.2/Content/Invoke-SnmpGet.ps1
# https://www.powershellgallery.com/packages/Proxx.SNMP/1.0.0.1/Content/Invoke-SnmpWalk.ps1
# https://exchange.nagios.org/directory/Plugins/Hardware/Printers/SNMP-Printer-Check/details
# https://www.powershellgallery.com/packages/Proxx.SNMP/1.1.1.4
# https://www.reddit.com/r/PowerShell/comments/77ls36/printer_page_counter_from_print_server/
# https://gallery.technet.microsoft.com/Get-PrintStatistics-a6bb8323
# https://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69

function Get-SHSPrinter {
    param (
        [string]$printer
    )

    Write-Progress -Activity "Getting printer details for $name" -Status 'Getting IP Address' -PercentComplete 10 -ParentId 1
    $snmp = New-Object -ComObject olePrn.OleSNMP
            
    #Gets the printer ip and full domain name
    $result = Get-PrinterIP $printer
            
    #CMDB Data

    Write-Progress -Activity "Getting printer details for $name" -Status 'Getting CMDB data' -PercentComplete 20 -ParentId 1
    # $cmdbRecord = Get-LANDeskCMDBItem -Name $printer
    $cmdbRecord = Search-ISMBO -BO cis -filter "Name eq '$Printer'" -RawFilter

    $LocationConstructors = @(
        "SHS_AssetLocality",
        "ivnt_Location",
        "SHS_Floor",
        "SHS_Department",
        "SHS_LocationDetails"
    )

    $LocationData = Foreach ($Loc in $LocationConstructors) {

        if ($Loc -eq 'SHS_Floor') {
            $(if ($cmdbRecord.$Loc -match '-') { $cmdbRecord.$Loc.split('-')[-1] + " Floor" } else { $cmdbRecord.$Loc }) 
        }
        elseif (![string]::IsNullOrEmpty($cmdbRecord.$Loc)) {
            $cmdbRecord.$Loc
        }
    }

    $LocationData = $LocationData -join ' | '

    # $locationData = $cmdbRecord.SHS_AssetLocality + " | " + $cmdbRecord.ivnt_Location + " | " + + " | " + $cmdbRecord.SHS_Department + " | " + $cmdbRecord.SHS_LocationDetails
    # if($cmdbRecord.values._SHSLocation3.Length -gt $cmdbRecord.values._SHSCalcLocationString.Length){
    #     $locationData = $cmdbRecord.values._SHSLocation3
    # }
    # else{
    #     $locationData = $cmdbRecord.values._SHSCalcLocationString
    # }
    if ($cmdbRecord) {
        # $CMDB_POA = $cmdbRecord.values._SHSPOANumber
        # $CMDB_AssetTag = $cmdbRecord.values._SHSAssetTag
        # $CMDB_Location = $locationData
        # $CMDB_MAC = $cmdbRecord.values._SHSMACAddress
        # $CMDB_model = $cmdbRecord.values._Model
        # $CMDB_serial = $cmdbRecord.values._SerialNumber
        # $CMDB_IP = $cmdbRecord.values._IPAddress

        ### Spark Properties
        $CMDB_POA = $cmdbRecord.SHS_POANumber
        $CMDB_AssetTag = $cmdbRecord.AssetTag
        $CMDB_Location = $locationData
        $CMDB_MAC = $cmdbRecord.MACAddress
        $CMDB_model = $cmdbRecord.Model
        $CMDB_serial = $cmdbRecord.SerialNumber
        $CMDB_IP = $cmdbRecord.IPAddress
    }
    else {
        $CMDB_POA = "*CMDB Mismatch - check CMDB*"
        $CMDB_AssetTag = "*CMDB Mismatch - check CMDB*"
        $CMDB_Location = "*CMDB Mismatch - check CMDB*"
        $CMDB_MAC = "*CMDB Mismatch - check CMDB*"
        $CMDB_model = "*CMDB Mismatch - check CMDB*"
        $CMDB_serial = "*CMDB Mismatch - check CMDB*"
        $CMDB_IP = "*CMDB Mismatch - check CMDB*"  
    }

    if ($result.IP -ne $null) {
                
        Write-Progress -Activity "Getting printer details for $name" -Status 'Connecting to printer' -PercentComplete 30 -ParentId 1

        $printerip = $result.IP
        $domainName = $result.Path
                
        #checks to see if the printer is online
        $online = Test-Connection $printerip -ErrorAction SilentlyContinue

                

        if ($online) {
            #opens snmp connection to the printer
            $snmp.open($printerip, 'public', 2, 3000)

            Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for MAC address' -PercentComplete 40 -ParentId 1
            # Start of MAC
            $pMAC = $SNMP.get(".1.3.6.1.2.1.2.2.1.6.2")
            $MAC = [System.Text.Encoding]::Default.GetBytes($PMac) | ForEach-Object {
                $_.ToString('X2')
            }
            $MAC = $MAC -join ':'
            #End of MAC

            Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for model' -PercentComplete 50 -ParentId 1
            # MODEL
            try { $model = $snmp.Get('.1.3.6.1.2.1.25.3.2.1.3.1') } catch { $model = $null } 
                    
            # IF IT HAS A MODEL NAME...
            if ($model) {
                        
                Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for color' -PercentComplete 60 -ParentId 1
                # COLOR
                # might want to check on this one
                try { if ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.2') -match 'Toner|Cartridge|ink') { $color = 'Yes' } else { $color = 'No' } } catch { $color = 'No' }

                Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for trays' -PercentComplete 70 -ParentId 1
                # TRAYS
                try { $trays = $($snmp.GetTree('.1.3.6.1.2.1.43.8.2.1.13') | ? { $_ -notlike 'print*' }) -join ';' } catch { $trays = $null }

                Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for serial numbers' -PercentComplete 80 -ParentId 1
                # SERIAL
                try { $serial = $snmp.Get('.1.3.6.1.2.1.43.5.1.1.17.1') } catch { $serial = $null }
                    
                Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for page count' -PercentComplete 90 -ParentId 1
                #PAGECOUNT
                try { $pagecount = $snmp.Get('.1.3.6.1.2.1.43.10.2.1.4.1.1') } catch { $page = $null }

                Write-Progress -Activity "Getting printer details for $name" -Status 'Querying for model features' -PercentComplete 100 -ParentId 1 -Id 2
                ##### FEATURES, NAME
                switch -Regex ($model) {
                    '^sharp' {
                        try { $status = $snmp.Get('.1.3.6.1.2.1.43.18.1.1.8.1.1') } catch { $status = $null }
                        # Start of MAC
                        $pMAC = $SNMP.get(".1.3.6.1.4.1.11.2.4.3.1.23.0")
                                
                        $MAC = [System.Text.Encoding]::Default.GetBytes($PMac) | ForEach-Object {
                            $_.ToString('X2')
                        }
                        $MAC = $MAC -join ':'
                        #End of MAC                              
                    }
                    '^zebra' {
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for name' -PercentComplete 10 -ParentId 2
                        try { $name = $snmp.Get('.1.3.6.1.4.1.10642.1.4.0').toupper() } catch { $name = $null }
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for model' -PercentComplete 30 -ParentId 2
                        try { $model = $snmp.Get('.1.3.6.1.4.1.10642.200.19.7.0').toupper() } catch { $model = $null }
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for MAC address' -PercentComplete 50 -ParentId 2
                        try { $MAC = $snmp.Get('.1.3.6.1.4.1.10642.20.10.20.10.2.1.5.2').toupper() } catch { $MAC = $null }
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for serial number' -PercentComplete 70 -ParentId 2
                        try { $serial = $snmp.Get('.1.3.6.1.4.1.10642.200.19.5.0') } catch { $serial = $null }
                        # try { $status = $snmp.Get('.1.3.6.1.4.1.10642.200.4.1.0') } catch { $status = $null }
                        # Zebra GK420
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for IP assignment mode' -PercentComplete 80 -ParentId 2
                        try { $ipconfig = "($($snmp.Get('.1.3.6.1.4.1.10642.200.50.1.1.5.0')))" } catch { $ipconfig = $null }
                        # Zebra ZD421
                        if (!$ipconfig) {
                            Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for IP assignment mode (2nd attempt)' -PercentComplete 85 -ParentId 2
                            try { $ipconfig = $snmp.Get('.1.3.6.1.4.1.10642.20.10.20.15.2.1.5.2') } catch { $ipconfig = $null }
                            $ipconfig = switch ($ipconfig) {
                                1 {'(All)'}
                                2 {'(GLEANING ONLY)'}
                                3 {'(RARP)'}
                                4 {'(BOOTP)'}
                                5 {'(DHCP)'}
                                6 {'(DHCP AND BOOTP)'}
                                7 {'(PERMANENT)'}
                            }
                        }
                        $model = "Zebra $model"
                        Write-Progress -Activity "Getting zebra features from $name" -Status 'Querying for status' -PercentComplete 90 -ParentId 2
                        #STATUS
                        $uri = $domainName
                        $html = Invoke-WebRequest -uri $uri
                        $raw = $html.rawcontent
                        $raw -match '([A-Z])\w+<.F' | Out-Null
                        $status = ($Matches[0] -split '<')[0]
                        #split off error condition
                        $raw -match 'RED>.+' | Out-Null
                        $split = $Matches[0] -split '>'
                        $err = $split[1] -split '<'
                        $status = $status + ' ' + $err[0]

                        Write-Progress -Activity "Getting zebra features from $name" -Completed
                    }
                    '^lexmark' {
                        Write-Progress -Activity "Getting lexmark features from $name" -Status 'Querying for name' -PercentComplete 50 -ParentId 2
                        try { $name = $snmp.Get('.1.3.6.1.4.1.641.1.5.7.6.0').toupper() } catch { $name = $null }
                        Write-Progress -Activity "Getting lexmark features from $name" -Completed
                    }
                    '^ricoh' {
                        Write-Progress -Activity "Getting ricoh features from $name" -Status 'Querying for name' -PercentComplete 50 -ParentId 2
                        try { $name = $snmp.Get('.1.3.6.1.4.1.367.3.2.1.7.3.5.1.1.2.1.1').toupper() } catch { $name = $null }
                        Write-Progress -Activity "Getting ricoh features from $name" -Completed
                    }
                    '^hp' {
                        Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for name' -PercentComplete 5 -ParentId 2
                        try { $name = $snmp.Get('.1.3.6.1.4.1.11.2.4.3.5.46.0').toupper() } catch { $name = $null }
                        Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for status' -PercentComplete 10 -ParentId 2
                        try { $status = $snmp.Get('.1.3.6.1.4.1.11.2.3.9.1.1.3.0') } catch { $status = $null }
                        Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for IP configuration' -PercentComplete 10 -ParentId 2
                        try { $ipconfig = $snmp.Get('.1.3.6.1.4.1.11.2.4.3.5.1.0') } catch { $status = $null }
                        $ipconfig = switch ($ipconfig) {
                            1 { '(manual)' } #manual-one 
                            2 { '(bootp)' } #bootp-two 
                            3 { '(manual)' } #manual-three 
                            4 { '(bootp)' } #bootp-four 
                            5 { '(dhcp)' } #dhcp 
                            6 { '' } #not-configured 
                            7 { '(default)' } #default-config 
                            8 { '(rarp)' } #rarp 
                            9 { '' } #read-only 
                            10 { '(auto-ip)' } #auto-ip 
                        }
                        if ($MAC -eq '') {
                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for MAC Address' -PercentComplete 15 -ParentId 2
                            $pMAC = $snmp.Get('.1.3.6.1.4.1.11.2.4.3.1.12.1.2.5')
                            $MAC = ($pMAC -split " ")[-1]
                            $MAC = ($MAC -replace '(..)', '$1:').trim(':')
                                    
                        }
                        #TONER
                        <#
                                HP Maintenance Kit Cur: 1.3.6.1.2.1.43.11.1.1.9.1.2 
                                HP Maintenance Kit Max: 1.3.6.1.2.1.43.11.1.1.8.1.2 
                                HP Toner Cur: 1.3.6.1.2.1.43.11.1.1.9.1.1 
                                HP Toner Max: 1.3.6.1.2.1.43.11.1.1.8.1.1 
                                #>
                        Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for toner color' -PercentComplete 20 -ParentId 2
                        try { $tonerColor = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.1') -split ' ')[0] } catch { $tonerColor = $null }
                        Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for toner level' -PercentComplete 25 -ParentId 2
                        try { $tonerLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.1') } catch { $tonerLvl = $null }
                        try { $tonerMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.1') } catch { $tonerMax = $null }
                        try { $toner = $tonerLvl / $tonerMax } catch { $toner = $null }
                        [int]$toner = $toner * 100
                        $supplies = "$tonerColor" + ":$toner% "
                        if ($color -eq 'Yes') {
                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for toner color levels' -PercentComplete 35 -ParentId 2
                            try { $tonerColor = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.2') -split ' ')[0] } catch { $tonerColor = $null }
                            try { $tonerLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.2') } catch { $tonerLvl = $null }
                            try { $tonerMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.2') } catch { $tonerMax = $null }
                            try { $toner = $tonerLvl / $tonerMax * 100 } catch { $toner = $null }
                            $supplies += "$tonerColor" + ":$toner% "

                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for toner color levels' -PercentComplete 50 -ParentId 2
                            try { $tonerColor = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.3') -split ' ')[0] } catch { $tonerColor = $null }
                            try { $tonerLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.3') } catch { $tonerLvl = $null }
                            try { $tonerMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.3') } catch { $tonerMax = $null }
                            try { $toner = $tonerLvl / $tonerMax * 100 } catch { $toner = $null }
                            $supplies += "$tonerColor" + ":$toner% "

                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for toner color levels' -PercentComplete 65 -ParentId 2
                            try { $tonerColor = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.4') -split ' ')[0] } catch { $tonerColor = $null }
                            try { $tonerLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.4') } catch { $tonerLvl = $null }
                            try { $tonerMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.4') } catch { $tonerMax = $null }
                            try { $toner = $tonerLvl / $tonerMax * 100 } catch { $toner = $null }
                            $supplies += "$tonerColor" + ":$toner% "

                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for maintenance kit status' -PercentComplete 80 -ParentId 2
                            try { $supplyName = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.6') -split ' ')[0] } catch { $tonerColor = $null }
                            if ($supplyName -contains 'Fuser' -or $supplyName -contains 'Maint') {
                                try { $supplyPartNumber = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.6') } catch { $supplyPartNumber = $null }
                                $supplyPartNumber -match '110V-(?<Name>.+), ' | Out-Null
                                $supplyPartNumber = $Matches.Name
                                try { $mainLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.6') } catch { $mainLvl = $null }
                                try { $mainMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.6') } catch { $mainMax = $null }
                                if ($mainMax -gt 1) {
                                    try { $maintKit = $mainLvl / $mainMax } catch { $maintKit = $null }
                                    [int]$maintKit = $maintKit * 100
            
                                    if ($null -ne $maintKit) {
                                        $supplies += "| $supplyName" + ":$maintKit%[$supplyPartNumber]"
                                    }
                                }
                            }
                            else {
                                try { $supplyName = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.5') -split ' ')[1] } catch { $tonerColor = $null }
                                try { $supplyPartNumber = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.5') } catch { $supplyPartNumber = $null }
                                $supplyPartNumber -match '110V-(?<Name>.+), ' | Out-Null
                                $supplyPartNumber = $Matches.Name
                                try { $mainLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.5') } catch { $mainLvl = $null }
                                try { $mainMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.5') } catch { $mainMax = $null }
                                if ($mainMax -gt 1) {
                                    try { $maintKit = $mainLvl / $mainMax } catch { $maintKit = $null }
                                    [int]$maintKit = $maintKit * 100
            
                                    if ($null -ne $maintKit) {
                                        $supplies += "| $supplyName" + ":$maintKit%[$supplyPartNumber]"
                                    }
                                }

                            }
                        }
                        else {
                            Write-Progress -Activity "Getting hp features from $name" -Status 'Querying for maintenance kit status' -PercentComplete 80 -ParentId 2
                            try { $supplyName = ($snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.2') -split ' ')[0] } catch { $supplyName = $null }
                            try { $supplyPartNumber = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.6.1.2') } catch { $supplyPartNumber = $null }
                            $supplyPartNumber -match '110V-(?<Name>.+), ' | Out-Null
                            $supplyPartNumber = $Matches.Name
                            try { $mainLvl = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.9.1.2') } catch { $mainLvl = $null }
                            try { $mainMax = $snmp.Get('.1.3.6.1.2.1.43.11.1.1.8.1.2') } catch { $mainMax = $null }
                            if ($mainMax -gt 1) {
                                try { $maintKit = $mainLvl / $mainMax } catch { $maintKit = $null }
                                [int]$maintKit = $maintKit * 100
        
                                if ($null -ne $maintKit) {
                                    $supplies += "| $supplyName" + ":$maintKit%[$supplyPartNumber]"
                                }
                            }
                        }
                                
                        Write-Progress -Activity "Getting hp features from $name" -Completed

                    }
                    '^muratec' {
                        Write-Progress -Activity "Getting muratec features from $name" -Status 'Querying for name' -PercentComplete 30 -ParentId 2
                        try { $name = $snmp.Get('.1.3.6.1.4.1.11.2.4.3.5.46.0').toupper() } catch { $name = $null }
                        Write-Progress -Activity "Getting muratec features from $name" -Status 'Querying for status' -PercentComplete 60 -ParentId 2
                        try { $status = $snmp.Get('.1.3.6.1.2.1.43.16.5.1.2.1.1') } catch { $status = $null }
                        # Start of MAC
                        Write-Progress -Activity "Getting muratec features from $name" -Status 'Querying for MAC address' -PercentComplete 90 -ParentId 2
                        $pMAC = $SNMP.get('.1.3.6.1.4.1.4322.101.1.2.1.5.2.1.1.3.1')
                        Write-Host $pMAC
                        $MAC = [System.Text.Encoding]::Default.GetBytes($PMac) | ForEach-Object {
                            $_.ToString('X2')
                        }
                        $MAC = $MAC -join ':'
                        #End of MAC   
                        Write-Progress -Activity "Getting muratec features from $name" -Completed
                    }
                    default {

                    }
                }#end switch -Regex ($model)
                #if ($model -like 'SHARP*') {}
                
            }#end if ($model)
        }
        else {
            $status = "Offline"
            $MAC = $CMDB_MAC
            $model = $CMDB_model
            $serial = $CMDB_serial
            $color = "Offline"
            $trays = "Offline"
            $pagecount = "Offline"
        }

        $props = [Ordered]@{
            Machine         = $printer
            Status          = $status
            IP              = "$printerip $ipconfig"
            DomainName      = $domainName
            MAC             = $MAC
            Model           = $model
            Serial          = $serial           
            #Comment = $comment
            Color           = $color
            Trays           = $trays
            #Features = $features
            #SystemDescription = $sysdescr0
            #Addresses = $addr
            PageCount       = $pagecount
            Supplies        = $supplies
            'CMDB POA'      = $CMDB_POA
            'CMDB AssetTag' = $CMDB_AssetTag
            'CMDB Location' = $CMDB_Location
        }
        $obj = New-Object -TypeName PSObject -Property $props
        $snmp.close()
        Write-Progress -Activity "Getting printer details for $name" -Completed
        return $obj
    }#end if ($printerIp)
    if ($CMDB_IP) {
        $offlineIP = 'CMDB IP - ' + $CMDB_IP
    }
    else {
        $offlineIP = 'No DNS Entry'
    }
    $props = [Ordered]@{
        Machine         = $printer
        Status          = 'No DNS Entry'
        IP              = $offlineIP
        DomainName      = 'No DNS Entry'
        MAC             = $CMDB_MAC
        Model           = $CMDB_model
        Serial          = $CMDB_serial
        #Comment = $comment
        Color           = 'No DNS Entry'
        Trays           = 'No DNS Entry'
        PageCount       = 'No DNS Entry'
        'CMDB POA'      = $CMDB_POA
        'CMDB AssetTag' = $CMDB_AssetTag
        'CMDB Location' = $CMDB_Location
    }
    $obj = New-Object -TypeName PSObject -Property $props
    $snmp.close()
    return $obj
            
}


function Get-PrinterIP {

    param (
         [parameter(ValueFromPipeline)]
         [string]$printer
     )
     $hit = $false
     $domains = @('.gsrmc.int.samhealth.net','.avery.int.samhealth.net','.sagh.int.samhealth.net','.snlh.int.samhealth.net','.slch.int.samhealth.net','.spch.int.samhealth.net')
     $result = Resolve-DnsName $printer -ErrorAction SilentlyContinue
 
        if($result -eq $null){
             $hit = $false
             foreach ($domain in $domains) {
                 $search = "$printer$domain"
                 $result = Resolve-DnsName $search -ErrorAction SilentlyContinue
                 if($result -ne $null){
                     $hit = $true
                     $name = $result.Name
                     $ip = $result.IPAddress
                   
                    
                 }
 
             }
 
             if($result -eq $null){
                 if($hit -eq $false){
                     $ip = $null
                     $name = $null
                 }
             }
         }
         else{
         $name = $result.Name
         $ip = $result.IPAddress
          
         }
 
     $props = [ordered]@{Hostname=$printer
                    IP=$ip
                    Path=$name
               }
     $obj = New-Object -TypeName PSObject -Property $props
 
     return $obj
 
         
 }

 function Start-SHSPrinterWeb {
    param(
        $printer
    )

    process {
        if($printer.DomainName -ne 'No DNS Entry' -and $printer.MAC -ne 'Offline'){
            $domainName = $printer.DomainName
            start "http://$domainName"
            $mac = $printer.MAC
            Sleep -Seconds 1
            start "https://azporion1/Orion/UDT/EndpointDetails.aspx?NetObject=UE-MAC:VAL=$mac"
 
        }
        else{
            Write-Warning "Unable to launch web interface"
        }
        
    }
 }
