Powershell,Start-Job无效。没有启动作业脚本是好的

时间:2016-12-16 13:10:33

标签: arrays powershell start-job

我已编写脚本将一个文件(包含主机名)拆分为十个文件,对每个文件中的主机名执行ping(即powershell test-connection命令)。为了加快这个过程,我使用了start-job命令来处理每个文件的主机名。如果我删除了start-job命令,脚本可以正常工作。但是当我使用start-job命令时,“scriptblock”中使用的数组不会返回所需的输出。相反,它仍然是空的。以下是部分脚本(仅用于一个文件处理)。请指导,我在这里缺少什么?

Start-Job -Name "Ping-Part-1" -ScriptBlock {
    foreach ($Comp1 in $file_part1_content) {
        If (test-Connection -ComputerName $Comp1 -Count 1 -Quiet) {
                $project1 = Create-New-Object
                $project1.AliveStatus = "Alive"
                $project1.Hostname = $Comp1
                $resultsarray_file1 += $project1
            }
            Else {
                $project1 = Create-New-Object
                $project1.AliveStatus = "Not Alive"
                $project1.Hostname = $Comp1
                $resultsarray_file1 += $project1
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

这样做有些不对劲。默认情况下,您在powershell会话中无法使用您在作业中使用的变量(反之亦然)。所以你有很多问题。你没有在工作中加入任何变量而你也没有找到任何变量。

你也把起步工作放在了错误的地方。你现在正在那里开始一个整个foreach循环的工作。我假设您要分别处理每台计算机。所以你应该在foreach循环中开始工作。

我前段时间写过一篇适合你情景的博文。你可以找到它here