2009-07-26 6 views
1

나는 powershell 스크립트를 실행하는 엔진을 가지고 있으며 실행시 호출자에게 어떤 xml을 피드백하기 위해 이 필요합니다. 엔진은 i/o를 idmef xml 메시지로 사용합니다. 따라서 스크립트는 비슷한 형식의 XML 메시지를 반환해야합니다. 나는 나를 위해 포맷팅을하는 클래스를 가지고 있으며, 스크립트 작성자가 그것을 사용하기를 원할 것이다.powershell 스크립트에서 사용할 C# 클래스를 래핑하는 가장 좋은 방법은 무엇입니까?

그래서 나는 powershell에서 사용할 수 있도록 C# 클래스를 포장하고 싶습니다.

예를 들어, 대괄호를 사용하여 C# 클래스를 참조 할 수있는 부분을 보았습니다.

어떻게 C#을 이와 같이 사용할 수있게 만들 수 있습니까? 클래스 lib로 만들어야하고 어떻게 든 PowerShell 런타임에로드해야한다고 생각합니다. 또한 나는 C#에서 powershell을 실행하고 있는데, 그 시점에서 어떻게 환경에 추가 할 수 있습니까?

도움을 주시면 감사하겠습니다. Bob.

+0

감사합니다. cmdlet으로 만들 계획 이었지만 PowerShell을 사용하지 않고 프레임 워크 클래스를 통해이 작업을 수행 할 수있는 방법이라고 확신했습니다. 그러면 엔진이 1 단 앞으로 이동하고 1 큰 요구 사항이 거의 완료됩니다. 감사. Bob. –

답변

3

, PowerShell은 V2 [System.Reflection.Assembly]::LoadFile("PathToYourAssembly") 를 통해 나에로드 할 수 있습니다

Add-Type -Path "PathToYourAsembly" 

당신이 당신의 응용 프로그램에서 실행 영역을 작성하고 확인하려는 경우 사용할 수있는 어셈블리가 있다면 RunspaceConfiguration으로 처리 할 수 ​​있습니다.

RunspaceConfiguration rsConfig = RunspaceConfiguration.Create(); 
AssemblyConfigurationEntry myAssembly = new AssemblyConfigurationEntry("strong name for my assembly", "optional path to my assembly"); 
rsConfig.Assemblies.Append(myAssembly); 
Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig); 
myRunSpace.Open(); 
+0

이 예제는 powershell에서 사용하고 있습니다. 어쨌든 runspace, 파이프 라인 등을 만들 때 C#에서 모든 스크립트에 어셈블리를 사용할 수있게합니다. –

+0

runspace 구성에 어셈블리를 추가하는 방법을 보여주기 위해 내 대답을 업데이트했습니다. –

+0

감사합니다 스티븐, 그게 전부 내가 찾고 있던 거의입니다. 안부. Bob. –

2

아무 것도 필요하지 않다고 생각합니다. PowerShell에서 .NET Framework 전체를 거의 액세스 할 수 있습니다. 나는 그들이 포장재를 만들지 않았을 것이라고 확신한다.

1

적어도 V1에서는 불가능하지는 않지만 PowerShell에서 인터페이스를 처리하는 것은 매우 어렵습니다. 따라서 클래스에서이를 피하십시오. PowerShell에서는 간단한 [reflection.assembly] :: Load 또는 LoadFile 만 있으면됩니다. 그것의 클래스와 어셈블리 (EXE 또는 DLL)가있는 경우

+0

이 예제는 powershell에서 사용하고 있습니다. 어쨌든 runspace, 파이프 라인 등을 만들 때 C#에서 모든 스크립트에 어셈블리를 사용할 수있게합니다. –

0

나는 C#에서 많은 매개 변수를 사용하고 원하는 XML을 추출하는 Cmdlet을 작성합니다. 그런 다음 Powershell의 Cmdlet을 사용하여 그 내용을 사용할 수 있습니다. 도움이 되었기를 바랍니다.

관련 문제