Powershell打印管道的内容?

时间:2012-01-09 07:58:24

标签: powershell powershell-v2.0

我有以下脚本。

Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job

我想在一个链式管道中显示已删除的作业。以下脚本不起作用。

 Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job | % { echo "Removed: $_" }

以下是错误。

 Get-Job | ? { $_.State -eq 'Completed' } | % { echo "Removed: $_" } | Remove-Job
  

Remove-Job:输入对象不能绑定到任何参数   该命令要么因为命令不接受管道输入   或者输入及其属性与任何参数都不匹配   采取管道输入。在线:2字符:81   + Get-Job | ? {$ .State -eq'已完成'} | %{echo“已移除:$ ”} |删除作业<<<<       + CategoryInfo:InvalidArgument :(已移除:系统... n.PSRemotingJob:PSObject)[Re move-Job],   ParameterBindingException       + FullyQualifiedErrorId:InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveJobComman
  d

1 个答案:

答案 0 :(得分:6)

您可以这样做以保持简单:

get-job | ?{$_.state -eq "Completed"} | 
  %{ Remove-Job $_; Write-host "Removed $($_.Name)" }

对于你想要的工作,你必须这样做:

get-job | ?{$_.state -eq "Completed"}  | %{write-host "Removed: $($_.Name)"; $_} | 
   Remove-Job

注意$_,将作业传递回管道。