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-传递计算机名列表)。还有一些对我来说意义不大(删除管理单元)。在很多情况下,从内存的角度来看,删除是危险的,因为对象引用可以被释放,或者因为看到删除的对象可能是一个“海森堡”。