У меня есть следующий сценарий.Powershell распечатать содержимое труб?
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 char: 81 + Get-Job | ? {$ .State -eq 'Completed'} | % {echo "Удалено: $"} | Remove-Job < < < < + CategoryInfo: InvalidArgument: (Удалены: Система ... n.PSRemotingJob: PSObject) [Re-ход работы], ParameterBindingException + FullyQualifiedErrorId: InputObjectNotBound, Microsoft.PowerShell.Commands.RemoveJobComman
d
В некоторых Remove-cmdlets есть -PassThru, чтобы облегчить жизнь, и позвольте избежать этого типа кода. К сожалению, Remove-Job не является одним из них. –
@ Start-Automating - Я думаю, почему у команды Remove был бы passthru? – manojlds
@manojlds ... по причинам вроде этого. Вы можете сказать, удалить элемент из коллекции, но хотите вернуть этот элемент. Из коробки я вижу два: Get-Command -Verb Удалить | Where-Object {$ _. Parameters.PassThru} Имеет смысл для меня (Remove-Computer - прохождение по списку имен компьютеров). Там другое делает мне гораздо меньше смысла (удаление snapins). Существует много ситуаций, когда удаление опасно с точки зрения памяти, потому что ссылка на объект может быть удалена или потому, что вид удаленного объекта может быть «HeisenBug». –