在Start-Job scriptblock中指定ComputerName的问题

时间:2012-07-10 17:41:55

标签: powershell

这是我正在尝试运行的脚本,其中$ 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 $_
}

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

任何想法或指示?

快速编辑:

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

最终编辑:

根据Keith的回应,问题似乎在我的环境中。我将自己进一步排除故障并接受Keith的回答,因为它指出了我的结论。

2 个答案:

答案 0 :(得分:1)

使用它怎么样?

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

$servers | ForEach-Object {$comp = $_
           Start-Job -ScriptBlock {Get-EventLog -LogName "Application" -Newest 10 -ComputerName $input} -InputObject $comp}

答案 1 :(得分: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,即使它们正在运行以获得中间输出&错误。也许一些错误信息可以帮助追踪问题。