Ejecución de múltiples bloques de script al mismo tiempo con Start-Job (en lugar de bucle)

¡Hola a todos

He estado buscando una manera de hacer que mi script sea más eficiente y he llegado a la conclusión (con la ayuda de la gente amable de StackOverflow) de que Start-Job es el camino a seguir.

Tengo el siguiente bucle foreach que me gustaría ejecutar simultáneamente en todos los servidores en $ servidores. Tengo problemas para comprender cómo realmente recopilo la información devuelta de Receive-Job y la agrego a $ serverlist.

PS: Sé que estoy lejos de lograr que esto se aclare, pero realmente agradecería algo de ayuda para comenzar, ya que estoy bastante perplejo sobre cómo funciona Start-Job y Receive-Job ..

# List 4 servers (for testing)
$servers = Get-QADComputer -sizelimit 4 -WarningAction SilentlyContinue -OSName *server*,*hyper*

# Create list
$serverlistlist = @()

# Loop servers
foreach($server in $servers) {

    # Fetch IP
    $ipaddress = [System.Net.Dns]::GetHostAddresses($Server.name)| select-object IPAddressToString -expandproperty IPAddressToString

    # Gather OSName through WMI
    $OSName = (Get-WmiObject Win32_OperatingSystem -ComputerName $server.name ).caption

    # Ping the server
    if (Test-Connection -ComputerName $server.name -count 1 -Quiet ) {
        $reachable = "Yes"
    }

    # Save info about server
    $serverInfo = New-Object -TypeName PSObject -Property @{
        SystemName = ($server.name).ToLower()
        IPAddress = $IPAddress
        OSName = $OSName
    }
    $serverlist += $serverinfo | Select-Object SystemName,IPAddress,OSName
}

Notas

Estoy enviando $ serverlist a un archivo csv al final del script Enumero aproximadamente 500 servidores en mi script completo

Respuestas a la pregunta(4)

Su respuesta a la pregunta