This returns nothing:
$x = "C:\temp"
Start-Job -ScriptBlock {get-childItem -path $x} | Wait-Job | Receive-job
But providing the path parameter without a variable, like so...
Start-Job -ScriptBlock {get-childItem -path C:\temp} | Wait-Job | Receive-job
...returns the contents of that temp folder, durrr.txt in this case. This is on Windows Server 2008R2 SP1 with Powershell $host.version output as follows:
Major Minor Build Revision
----- ----- ----- --------
3 0 -1 -1
Suspecting Powershell's v3, I tried updating a Windows 7 SP1 desktop from v2 to v3, but no luck recreating the problem. On that upgraded desktop, $host.version output now matches the above.
What's going on?
EDIT / What was going on?
The busted job seems equivalent to
Start-Job -ScriptBlock {get-childItem -path $null} | Wait-Job | Receive-job
So gci returned results for the background job's current directory, the Documents folder, which happened to be empty.
You need to pass argument to the scriptblock
In powershell V3 you can do :