2011-09-17 4 views

답변

1

이 시도 :

param( [Parameter(Mandatory = $true,ValueFromPipeline = $true)] 
    $Process 
) 

process{ 
New-Object PSObject -Property @{ 
Name = $Process.Processname} 
} 

편집 :

당신이 기능이 필요한 경우 :

function Get-MoreInfo { 
param( [Parameter(Mandatory = $true,ValueFromPipeline = $true)] 
    $Process 
) 


process{ 
New-Object PSObject -Property @{ 
Name = $Process.Processname} 
} 

} 

다음 사용할 수 있습니다 :

설명 후

편집 :

Read about dot sourcing a script

+0

기능을 사용하고 싶습니다. 그러나이 기능을 사용할 수 없습니다. 완전한 샘플을 만들고 '실제 파워 쉘에 기능을 준비 했습니까?'라는 의미를 확장 하시겠습니까? – LamonteCristo

+0

제 대답의 코드가 작동합니다. - 복사해서 붙여 넣었 니? 뭐라구? 내 대답에 dot sourcing에 대한 링크를 추가했습니다. –

0

난 당신이 단순히 필터 대신 기능으로 Get-MoreInfo을 작성, 당신은 원하는 효과를 얻을 것이다.

Filter Get-MoreInfo 
{ 
    param( [Parameter(Mandatory = $true,ValueFromPipeline = $true)] 
     $Process 
    ) 
... 
+0

필터에 대한 문서가 있습니까? 방금 일부 웹 사이트 about_filters에서 발견되었지만 기술적 인 사이트 http://technet.microsoft.com/ko-kr/library/dd347616.aspx에서 사용할 수 없습니다. – Tom

+0

모르겠다. _Powershell을 읽을 때이 기능에 대해 알게되었습니다. Action in _ Bruce Payette (http://www.manning.com/payette/) - 내가 어쨌든 정말로 추천하는 책. –

0

사실, 모두 기독교의 대답과 tbergstedt의 대답은 모두 유효 - 그리고 그들은 본질적으로 동일합니다. 방법 및 이유에 대한 자세한 내용은 Simple-Talk.com의 최근 기사 인 Down the Rabbit Hole- A Study in PowerShell Pipelines, Functions, and Parameters에서 확인할 수 있습니다. 요컨대

여기 두드러진 점이다 :

  1. 기능 체는 , 프로세스단부 블록 시작 포함한다.
  2. 위의 3 개 블록을 명시 적으로 지정하지 않는 함수는 모든 코드가 end 블록에있는 것처럼 작동합니다. 따라서 처음에 관찰 한 결과입니다.
  3. 필터은 위의 3 개 블록없이 함수를 작성하는 또 다른 방법이지만 모든 코드는 프로세스 블록에 있습니다. 이것이 위의 두 답변이 같은 이유입니다.
관련 문제