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
有办法做到这一点吗?
答案 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
。