按州和名义获取工作?

时间:2013-05-02 23:02:16

标签: powershell powershell-v3.0

Powershell v3。

Start-Job -Name "TestJob" -ScriptBlock { Write-Host "foo" }

工作开始很好。然后我输入

Get-Job

我看到了

Id   Name      PSJobTypeName   State      HasMoreData   Location      Command
--   ----      -------------   -----      -----------   --------      -------
18   TestJob   BackgroundJob   Completed  True          localhost     Write-Host "foo"

到目前为止,一切都按计划进行。但现在让我们说我在这个会话中有很多工作,他们有各种不同的名字。所以我想只找到名为TestJob的作业:

Get-Job -Name TestJob

这也完全按预期工作,只返回该名称的作业。但现在让我们说我想找到名为TestJob 的作业仍然在运行:

PS C:\> Get-Job -Name TestJob -State Running
Get-Job : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:1
+ Get-Job -Name TestJob -State Running
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-Job], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.GetJobCommand

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:7)

尝试以下

Get-Job -State Completed | Where-Object {$_.Name.Contains("TestJob")}

以下是基于您的示例

的示例运行
PS D:\>  Get-Job -State Completed | Where-Object {$_.Name.Contains("Job")}

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
1               TestJob         Completed  True            localhost             Write-Host "foo"
3               TestJob         Completed  True            localhost             Write-Host "foo"

有关详细信息,请参阅Get-Help Where-Object