1

这是我正在尝试运行的脚本,其中 $servers = @("computer1","computer2")

$servers | % {
    Start-Job -ScriptBlock {param($c) Get-EventLog -LogName "Application" -Newest 10 -ComputerName $c} -ArgumentList $_
}

我遇到的问题是这些工作将保持“运行”。我想这可能是传递参数的问题,所以我删除了脚本的那部分,就像这样-

$servers | % {
    Start-Job -ScriptBlock {param($c) Get-EventLog -LogName "Application" -Newest 10} -ArgumentList $_
}

......它奏效了。然后我尝试指定计算机名(以验证它是一个参数传递问题),就像这样 -

$servers | % {
    Start-Job -ScriptBlock {param($c) Get-EventLog -LogName "Application" -Newest 10 -ComputerName "computer1"} -ArgumentList $_
}

预期的效果是它可以在同一台服务器上获得两次远程事件。相反,我遇到了与以前相同的问题:脚本启动了 2 个作业,它们都永远处于运行状态。

任何想法或指示?

快速编辑:

我也尝试在远程机器上使用 Get-EventLog 而不尝试在作业中运行它。这很好用。

最终编辑:

从基思的回应看来,问题出在我的环境中。我将自行进一步排除故障并接受基思的回答,因为它指出了我的结论。

4

2 回答 2

1

用这个怎么样?

$servers = @("computer1","computer2")

$servers | ForEach-Object {$comp = $_
           Start-Job -ScriptBlock {Get-EventLog -LogName "Application" -Newest 10 -ComputerName $input} -InputObject $comp}
于 2012-07-20T09:24:29.270 回答
1

对于它的价值,我无法在 PowerShell V2 或 V3 上重现此错误:

8# 'build3','build5' | %{ Start-Job -ScriptBlock {param($c) Get-EventLog -LogName "Application" -Newest 10 -Comput
erName $c} -ArgumentList $_}

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
5               Job5            Running    True            localhost            param($c)...
7               Job7            Running    True            localhost            param($c)...


9# Get-Job

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
1               Job1            Failed     False           localhost            param($c)...
3               Job3            Completed  False           localhost            param($c)...
5               Job5            Completed  True            localhost            param($c)...
7               Job7            Completed  True            localhost            param($c)...


10# Receive-Job -id 5

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
 1397893 Jul 20 15:47  Warning     Group Policy Inte...   2248216579 The description for Event ID '-2046750717' in S...
 1397892 Jul 20 15:47  Warning     Group Policy Regi...   2248216579 The description for Event ID '-2046750717' in S...

可能是配置问题。您是否在服务器上运行了远程注册表服务?此外,您可以在作业上运行 Receive-Job,即使它们正在运行以获取中间输出和错误。也许一些错误信息将有助于追查问题。

于 2012-07-20T22:12:58.777 回答