Function Get-IPv4Scopes <#

.SYNOPSIS
        Read IPv4Scopes from an array of servers
.PARAMETER Servers
        Specifies an array of servers
.EXAMPLE
        Get-IPv4Scopes

        Will prompt for all inputs

#> {

[CmdletBinding()]
Param(
# 1
[parameter(
    Mandatory=$true,
    Position=0,
    ValueFromPipelineByPropertyName=$true,
    HelpMessage="Server List"
    )]
[string[]]$Servers,
#2
[parameter(Mandatory=$false,ValueFromPipeline=$false)]
[bool]$Unique=$false
)  #EndParam

Begin {}

Process {
    $arrayJobs=@()
    foreach ($server in $Servers) {
        $arrayJobs+=Invoke-Command -ComputerName $server -scriptblock {Get-DhcpServerv4Scope}  -AsJob
    }
    $complete=$false
    while (-not $complete) {
        $arrayJobsInProgress= $arrayJobs | Where-Object { $_.State -match 'running' }
        if (-not $arrayJobsInProgress) { $complete=$true }
    }
    $Scopes=$arrayJobs|Receive-Job
    $UniqueScopes=$Scopes|Sort-Object -Property ScopeId -Unique
}

End {
    if ($Unique) { return $UniqueScopes }
    else { return $Scopes }
}

} end function