2013-05-02 3 views
2

Powershell v3.Get-Job по статусу и имени?

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 

Есть ли способ сделать это?

ответ

6

Попробуйте следующее

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 для получения дополнительной информации по этому вопросу.

+1

Это билет. Просто. Благодаря! –

+0

Это удовольствие. –

Смежные вопросы