0

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

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
            }
        }
    }
4

1 回答 1

0

这有几件事是错误的。默认情况下,您在作业中使用的变量在您的 powershell 会话中不可用(反之亦然)。所以你有多个问题。您没有在工作中添加任何变量,也没有从工作中检索任何变量。

你也把开始工作放在了错误的地方。您现在正在开始一项工作,其中包含整个 foreach 循环。我假设您想分别处理每台计算机。所以你应该在 foreach 循环中开始工作。

我前段时间写了一篇博文,适合您的情况。你可以在这里找到它。

于 2016-12-16T13:17:26.277 回答