Scripts/Invoke-iSpyAgentUnblockExternalAccess.ps1


Function Invoke-iSpyAgentUnblockExternalAccess {

    <#
 
    .SYNOPSIS
        Unblock external access to the system
 
    .DESCRIPTION
        Unblock external access to the system
 
    .PARAMETER iSpyHost
        Computer name or IP (optional, default = LOCALHOST)
 
    .PARAMETER Port
        Port number to access AgentDVR (optional, default = 8090)
 
    .EXAMPLE
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost MyCamsSystem
 
    .EXAMPLE
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost MyCamsSystem -Port 7000
 
    .EXAMPLE
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost 192.168.10.20
 
    .EXAMPLE
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost 192.168.10.20 -Port 7000
 
    .NOTES
        More than one host name and port can be entered,
        values must be seperated by commas:
 
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost MyCamsSystem1, MyCamsSystem2, MyCamsSystem3
 
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost MyCamsSystem1, MyCamsSystem2, MyCamsSystem3 -Port 7000, 8000, 9000
 
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost 192.168.10.20, 192.168.10.30, 192.168.10.40
 
        Invoke-iSpyAgentUnblockExternalAccess -iSpyHost 192.168.10.20, 192.168.10.30, 192.168.10.40 -Port 7000, 8000, 9000
 
    .LINK
        N/A
 
    #>


    [CmdletBinding ()]

    Param (

        [Parameter (Mandatory = $False,
                    ValueFromPipeline = $True,
                    ValueFromPipelineByPropertyName = $True,
                    HelpMessage = 'Enter computer name or IP'
                   )
        ]

        [String[]]$iSpyHost = 'localhost',

        [Parameter (Mandatory = $False,
                    ValueFromPipeline = $True,
                    ValueFromPipelineByPropertyName = $True,
                    HelpMessage = 'Enter port number'
                   )
        ]

        [String[]]$Port

    )

    BEGIN {

        $Index = 0

        Function Show-Output ($Values) {

            [PSCustomObject]@{

                iSpyHost = $Values[0]
                Status = $Values[1]

            }

        }

    }

    PROCESS {

        ForEach ($Computer In $iSpyHost) {

            Show-ProgressBar -Activity 'iSpy Agent DVR' -TotalItems $iSpyHost.Count -Counter ($Index + 1) -ProcessItem $Computer.ToUpper()

            If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) {

                Try {

                    If ($Port) {

                        $hPort = $Port[$Index]

                    }

                    If ($hPort.Length -eq 0) {

                        $hPort = '8090'

                    }

                    $iSpyHostURL = -join ('http://', $Computer, ":$hPort")

                    $Results = Invoke-WebRequest -Uri $iSpyHostURL/Command/UnblockExternal | ConvertFrom-Json

                    Show-Output ($Computer.ToUpper(), 'External Access Unblocked')

                }

                Catch {

                    Show-Output ($Computer.ToUpper(), $PSItem.Exception.Message)

                }

            }

            Else {

                Show-Output ($Computer.ToUpper(), 'Unreachable')

            }

            $Index++

        }

    }

    END {}

}