当-path为变量时,gci没有接收作业结果



此语句不返回任何结果:

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

但是提供不带变量的path参数,像这样…

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

…返回临时文件夹的内容,在本例中为durrr.txt。这是在Windows Server 2008R2 SP1上使用Powershell $host。版本输出如下:

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

我怀疑Powershell是v3,我试着将Windows 7 SP1桌面从v2更新到v3,但没有运气再出现这个问题。在升级后的桌面上,$host。版本输出现在与上面匹配。

怎么回事?

编辑/发生了什么事?

失败的任务似乎相当于

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

所以gci返回后台作业的当前目录的结果,文档文件夹,碰巧是空的。

您需要向scriptblock传递参数

$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

相关内容

  • 没有找到相关文章

最新更新