2017-05-22 12 views
0

는 현재 내가 그렇게하고 있어요 :파이프 라인에 결과를 반환하기 위해 함수 인수에서 PSObject를 쉽게 생성하는 방법은 무엇입니까?

function Invoke-Service 
{ 
    Param(
     [parameter(Mandatory=$true, 
      ValueFromPipeline=$true, 
      ValueFromPipelineByPropertyName=$true)] 
     [int] $Id, 
     [parameter(Mandatory=$true, 
      ValueFromPipeline=$true, 
      ValueFromPipelineByPropertyName=$true)] 
     [string] $Name, 
     [parameter(Mandatory=$true, 
      ValueFromPipeline=$true, 
      ValueFromPipelineByPropertyName=$true)] 
     [int] $Age 
    ) 
    DoSomeWork | 
     New-Object PSObject -Property @{ Id = $Id; Name = $Name; Age = $Age } 
} 

이 함수는 직접 또는 Import-Csv 출력 또는 select 출력에서 ​​매개 변수입니다 얻을 수 있습니다.

는하지만 매우 자주 PSObject의 모든 힘으로 파이프 라인을 계속 처리 할 :

Import-Csv -Path "data.csv" | 
    Invoke-Service | 
     ... # 

그리고 내 질문은 : 나는 모든 매개 변수를 열거 New-Object를 호출해야 또는 키워드 등이 수행 내가 놓친 기술?

New-Object psobject -Property $PSBoundParameters 

$PSBoundParameters는 그렇게, 키와 값으로 매개 변수의 인수로 전체 매개 변수 이름을 사용하여 명명 된 매개 변수에 따라 항목이있는 해시 테이블을 포함하는 자동 변수입니다 :

답변

2

$PSBoundParameters 변수를 사용하여 귀하의 예제는 이미 전달하려는 입력과 100 % 일치합니다.

+0

파이프 라인의 매개 변수 (누군가 의심되는 경우)뿐만 아니라 작동합니다. 큰! – astef