Powershell打印管道的内容?

ca9*_*3d9 3 powershell powershell-2.0

我有以下脚本.

Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job
Run Code Online (Sandbox Code Playgroud)

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

 Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job | % { echo "Removed: $_" }
Run Code Online (Sandbox Code Playgroud)

以下是错误.

 Get-Job | ? { $_.State -eq 'Completed' } | % { echo "Removed: $_" } | Remove-Job
Run Code Online (Sandbox Code Playgroud)

删除-工作:输入对象不能被绑定到该命令的任何参数或者是因为T他命令不采取管道输入或输入及其属性不匹配任何采取管道输入的参数.在线:2字符:81 + Get-Job | ?{$ .State -eq'已完成'} | %{echo"已删除:$ "} | 除去-工作<<<< + CategoryInfo:InvalidArgument:(删除:系统... n.PSRemotingJob:PSObject)[重新布展作业],ParameterBindingException + FullyQualifiedErrorId:InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveJobComman
d

man*_*lds 6

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

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

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

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

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