Search code examples
windowspowershellstart-job

Powershell Retrieve-Job gives "cannot index into null array error"


I am trying to test if two PC's are connected by using the following script

$array ='PC1','PC2'


for ($i=0; $i -lt $array.length; $i++)  {

     Start-Job –Name TestConnection$i –Scriptblock {

            if(test-connection $array[$i] -count 1 -quiet){
               write-host Success
            }

            else { write-host No connection
            }

    }

}

When I try to do Receive-Job for either one I get "Cannot index into a null array". What am I doing wrong?


Solution

  • You need to pass in the PC name as an argument, as the array does not exist in the context of the script block, like this:

    $array ='PC1','PC2'
    
    for ($i=0; $i -lt $array.Length; $i++) {
    
        Start-Job –Name TestConnection –Scriptblock { 
            param($pcName)
    
            if(Test-Connection $pcName -Count 1 -Quiet) {
                Write-Host Success
            } else {
                Write-Host No connection
            }           
        } -ArgumentList $array[$i]
    }