2011-03-03 4 views
1

프로그래밍 방식으로 어셈블하고 내 자신의 PSCmdlet을 포함하는 파이프 라인을 실행하고 싶습니다. 그러나 Pipeline 클래스는 문자열과 명령 (차례대로 문자열로 구성) 만 추가 할 수 있습니다.프로그래밍 방식으로 PSCmdlet을 Powershell 파이프 라인에 추가하는 방법?

var runspace = ...; 
var pipeline = runspace.CreatePipeline(); 
pipeline.AddCommand("Get-Date"); // ok 
var myCmdlet = new MyCmdlet(); 
pipeline.AddCommand(myCmdlet); // Doesn't compile - am I fundamentally 
     // misunderstanding some difference between commands and commandlets? 
foreach(var res in pipeline.Invoke()) {...} 

나는 내가하고있는 일은 근본적으로 의미가 있어야한다고 생각한다. 아니면 다른 방법이 있을까?

답변

1

cmdlet은 Cmdlet 특성에 넣은 내용에 따라 잘 정의 된 구문을 사용해야합니다. 예를 들어

가 여기에 내장 된 명확한 호스트 기능을 대체하는 내 자신의 명확한 호스트 cmdlet을 만들 경우의 시작이다 :이 cmdlet 속성에서

<Cmdlet("clear", "host")> _ 
Public Class Clearhost 
    Inherits Cmdlet 

을 내 cmdlet의 구문은 " 명확한 주인 ". (문자열이기 때문에) 그것을 사용할 수 있어야하고 파이프 라인에 추가 할 수 있어야합니다.

0

다른 답변을 검색하고 ILSpy에서 System.Management.Automation을 파고 들자면 Cmdlet 인스턴스를 직접 추가 할 수 없다고 확신합니다. PowerShell을 사용하려면 문자열을 사용해야합니다. 올바른 형식을 사용하여 .NET에서 문자열을 가져 오려면 불행한 문자열입니다.

관련 문제