1

这不返回任何内容:

$x = "C:\temp"
Start-Job -ScriptBlock {get-childItem -path $x} | Wait-Job | Receive-job

但是提供没有变量的路径参数,就像这样......

Start-Job -ScriptBlock {get-childItem -path C:\temp} | Wait-Job | Receive-job

...返回该临时文件夹的内容,在本例中为 durrr.txt。这是在带有 Powershell $host.version 输出的 Windows Server 2008R2 SP1 上,如下所示:

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1     -1

怀疑 Powershell 的 v3,我尝试将 Windows 7 SP1 桌面从 v2 更新到 v3,但没有运气重现问题。在升级后的桌面上,$host.version 输出现在与上述匹配。

这是怎么回事?

编辑/发生了什么?

被破坏的工作似乎等同于

Start-Job -ScriptBlock {get-childItem -path $null} | Wait-Job | Receive-job

所以 gci 返回后台作业当前目录的结果,Documents 文件夹恰好是空的。

4

1 回答 1

1

您需要将参数传递给脚本块

$x = "C:\temp"
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
于 2013-03-01T15:25:28.470 回答