我已编写powershell脚本将一个文件(包含主机名)拆分为十个文件,对每个文件中的主机名执行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
}
}
}
答案 0 :(得分:0)
这样做有些不对劲。默认情况下,您在powershell会话中无法使用您在作业中使用的变量(反之亦然)。所以你有很多问题。你没有在工作中加入任何变量而你也没有找到任何变量。
你也把起步工作放在了错误的地方。你现在正在那里开始一个整个foreach循环的工作。我假设您要分别处理每台计算机。所以你应该在foreach循环中开始工作。
我前段时间写过一篇适合你情景的博文。你可以找到它here。