{ Rouge }

An elegant, extendable code highlighter written in pure Ruby.

Available on GitHub

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