Powershell распечатать содержимое труб? - PullRequest
3 голосов
/ 09 января 2012

У меня есть следующий скрипт.

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 символа: 81 + Get-Job |?{$ .State -eq 'Завершено'} |% {echo "Удалено: $ "} |Remove-Job <<<< + CategoryInfo: InvalidArgument: (Removed: System ... n.PSRemotingJob: PSObject) [Re move-Job], ParameterBindingException + FullyQualifiedErrorId: InputObjectNotBound, Microsoft.PowerShell.Commands.RemoveJobComman <br>1013

1 Ответ

6 голосов
/ 09 января 2012

Вы можете сделать так, чтобы было проще:

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

Для того, что вы пытались работать, вы должны сделать:

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

Обратите внимание на $_,передать задание обратно в конвейер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...