本文介绍了当-PATH为变量时,没有GCI的接收作业结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这不返回任何内容:
$x = "C: emp"
Start-Job -ScriptBlock {get-childItem -path $x} | Wait-Job | Receive-job
但提供不带变量的Path参数,如下所示...
Start-Job -ScriptBlock {get-childItem -path C: emp} | Wait-Job | Receive-job
...返回该临时文件夹的内容,在本例中为durr.txt。这是在装有PowerShell$host的Windows Server 2008R2 SP1上运行的。版本输出如下:Major Minor Build Revision
----- ----- ----- --------
3 0 -1 -1
怀疑PowerShell的v3,我尝试将Windows7SP1桌面从v2更新到v3,但没有成功地重现问题。在升级后的桌面上,$Host.Version输出现在与上述内容匹配。
发生了什么?
编辑/发生了什么?
失败的作业似乎相当于
Start-Job -ScriptBlock {get-childItem -path $null} | Wait-Job | Receive-job
因此GCI返回了后台作业的当前目录Documents文件夹的结果,该文件夹恰好为空。
推荐答案
您需要将参数传递给脚本块
$x = "C: emp"
Start-Job -ScriptBlock {get-childItem -path $args[0]} -argumentlist $x | Wait-Job | Receive-job
在PowerShell V3中,您可以:
$x = "C:windows"
Start-Job -ScriptBlock {get-childItem -path $using:x} | Wait-Job | Receive-job
这篇关于当-PATH为变量时,没有GCI的接收作业结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!