Search code examples
powershellinvoke-command

Accessing remote (Invoke-Command) array variable in local session


I am trying to access the array variable outside the invoke command. I tried the below code, where I cannot access the remote array variable from my local session.

$serverlist = @("server1", "server2")

foreach ($server in $serverlist) {
    #Write-Host $computer

    $vinodh = Invoke-Command -ComputerName $server -ScriptBlock {
        $testVar = @("Stack", "over", "flow")
    }
}
foreach ($vars in $testVar) {
    Write-Host $vars # Unable to get the values as stack,over, flow
}

Actual results: unable to get values.

I expect the output as

stack
over
flow

Solution

  • Variables set inside the remote session were not populated to the local powershell session (About Scopes). You could return the values from the invoked session for using later.

    $ReturnValues = Invoke-Command -ComputerName $Server -ScriptBlock {
        $testVar=@("Stack","over","flow")
        return  $testVar #return data
    }
    
    foreach ($ReturnValue in $ReturnValues)
    {
        $ReturnValue
    }