本文介绍了当-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的接收作业结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 08:11