I have a powershell 2.0 script which should run a command on several servers and process the output. I want to run the command and the processing for each server in a background job.
The comand works without any problems and terminates within half a second or less:
Invoke-Command -ComputerName $client -ScriptBlock { #do some stuff }
But when I run this in a background job, the job doesn't terminate:
Start-Job { Invoke-Command -ComputerName $client -ScriptBlock { #do some stuff } }
Has someone a idea what the problem could be?
I prefer to use Start-Job to run invoke-command so that I can watch and handle the jobs on the central machine using Get-Job.
When I loop through the "list of remote computers" I use the "current computer name" as the -Name parameter in the Start-Job so that I can watch each job individually and as a group.
Just my two cents from experience.
Edit Example:
To your question about why the Job "never finishes" I don't have input other than, make sure the code you are running remotely does actually end.
Hope this helps
This will also work, at least in Powershell 5
Looks like you should do it the other way:
http://technet.microsoft.com/en-us/library/hh849698.aspx
For Latest version of PS you can create a New Session and use it with Invoke-Command start-job cmdlets instead of using the ComputerName arguments directly.