私は以下のスクリプトを持っています。Powershellはパイプの内容を印刷しますか?
Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job
削除されたジョブを1つの連鎖パイプで表示したいとします。次のスクリプトは動作しません。
Get-Job | ? { $_.State -eq 'Completed' } | Remove-Job | % { echo "Removed: $_" }
また、以下のエラーが発生します。
Get-Job | ? { $_.State -eq 'Completed' } | % { echo "Removed: $_" } | Remove-Job
削除 - ジョブ:T彼のコマンドは、パイプライン入力 または入力を取らないと、そのプロパティは、パラメータのいずれかと一致しないため、入力オブジェクトは、 コマンドのいずれかのための任意のパラメータにバインドすることはできませんパイプライン入力を受け取る 行:2文字:81 + Get-Job | ? {$ .State -eq 'Completed'} | %{echo "削除済み:$"} |削除-仕事に< < < < + CategoryInfo:InvalidArgument:(削除:システム... n.PSRemotingJob:PSObject)[再入居ジョブ]、 ParameterBindingExceptionを + FullyQualifiedErrorId:InputObjectNotBound、Microsoft.PowerShell.Commands.RemoveJobComman
D
多くのRemove-コマンドレットには、Lifeを簡単にするための-PassThruがあり、この種のコードを避けることができます。残念ながら、Remove-Jobはその1つではありません。 –
@ Start-Automating - Removeコマンドレットがパススルーを持つ理由は何ですか? – manojlds
@manojlds ...このような理由から。コレクションからアイテムを削除しても、そのアイテムが返されるようにすることもできます。ボックスの外に私は2つを見る: Get-Command -Verb Remove | Where-Object {$ _。Parameters.PassThru} 私は1つの意味があります(Remove-Computer - コンピュータ名のリストを渡す)。他のものは私にはあまり意味がありません(スナップインを削除する)。 オブジェクトの参照が破棄される可能性があるため、または削除されたオブジェクトが「HeisenBug」である可能性があるため、Removeがメモリの観点から危険な場合があります。 –