다음 명령을 사용하여 파이프 라인을 실행합니다.파이프 라인 의미가 Where-Object로 전파되지 않습니다.
.\Find-CalRatioSamples.ps1 data16 `
| ? {-Not (Test-GRIDDataset -JobName DiVertAnalysis -JobVersion 13 -JobSourceDatasetName $_ -Exists -Location UWTeV-linux)}
첫번째 사용자 정의 스크립트는 매우 빠르고 (밀리 초) 실행됩니다. 두 번째 명령은 나 역시 작성한 사용자 정의 명령입니다 (https://github.com/LHCAtlas/AtlasSSH/blob/master/PSAtlasDatasetCommands/TestGRIDDataset.cs 참조). 그것은 매우 느립니다.
실제로 입력의 각 줄을 처리하는 속도가 그렇게 느리지는 않습니다. 입력의 첫 번째 줄을 처리 할 수있는 설정은 매우 비쌉니다. 그러나 그것은 매우 빠르게 진행됩니다. 따라서 비싼 코드는 모두 한 번 실행되고 새로운 파이프 라인 입력마다 상당히 빠른 코드 만 실행하면됩니다.
불행히도, 내가 원할 때? {} 위의 구문을 사용하면 PowerShell은 이전처럼 파이프 라인을 유지하지 못하는 것 같습니다. 이제는 각 명령 줄마다 새로운 명령을 내리고 명령이 각 행의 모든 설정을 다시 실행하게합니다.
파이프 라인을 호출하는 방법을 변경할 수 있습니까? 또는이 문제를 방지하기 위해 내 cmdlet을 코딩 한 방법은 무엇입니까? 아니면 이것이 단지 개체가 작동하는 방식이기 때문에 붙어 있습니까?
나는 PashThru 매개 변수 전에 들어하지 않는 게 좋을 - 한 복 주머니의 비트처럼 보이지만 좋아 보인다. 다음은이 질문에 나중에 나오는 블로그 게시물입니다. https://blogs.technet.microsoft.com/heyscriptingguy/2011/11/18/use-the-powershell-passthru-parameter-and-get -back-objects / – Gordon