Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell是否打印管道的内容?_Powershell_Powershell 2.0 - Fatal编程技术网

Powershell是否打印管道的内容?

Powershell是否打印管道的内容?,powershell,powershell-2.0,Powershell,Powershell 2.0,我有以下脚本 Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job 我想在单链管道中显示删除的作业。以下脚本不起作用 Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job | % { echo "Removed: $_" } 下面的代码将获取错误 Get-Job | ? { $_.State -eq 'Completed' } | % { echo "Removed: $_" }

我有以下脚本

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
删除作业:无法将输入对象绑定到的任何参数 该命令可能是因为该命令不接受管道输入 或者输入及其属性与任何参数都不匹配 这需要管道输入。第2行字符:81
+找工作?{$.State-eq'Completed'}|%{echo“Removed:$”}| Remove Job您可以这样做以保持简单:

get-job | ?{$_.state -eq "Completed"} | 
  %{ Remove-Job $_; Write-host "Removed $($_.Name)" }
对于您尝试工作的内容,您必须:

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

请注意,
$\u
,它将作业传递回管道。

许多Remove-cmdlet都有一个-PassThru来简化操作,并允许您避免此类代码。不幸的是,删除作业不是其中之一。@开始自动化-我在想为什么删除cmdlet会有passthru?@manojlds。。。因为这样的原因。您可能会说,从集合中删除一个项目,但希望返回该项目。开箱即用,我看到两个:Get命令-动词Remove | Where Object{$\ Parameters.PassThru}一个对我有意义(Remove Computer-传递计算机名列表)。还有一些对我来说意义不大(删除管理单元)。在很多情况下,从内存的角度来看,删除是危险的,因为对象引用可以被释放,或者因为看到删除的对象可能是一个“海森堡”。