我有一个执行powershell脚本的引擎,当它们执行时,需要 将一些xml反馈给调用者。该引擎仅将i / o作为idmef xml消息。因此脚本需要返回类似格式的xml消息。我有一个类为我做格式化,它希望脚本编写者使用它。
所以问题是我想包装一个c#类以使它能够被powershell使用。
我看到了一些你可以使用方括号mob引用c#类的东西,例如
如何使c#可以像这样使用。我认为它需要被制作成类lib并以某种方式加载到powershell运行时但是如何。此外,当我从c#运行powershell时,如何将其添加到环境中。
任何帮助将不胜感激。 鲍勃。
答案 0 :(得分:3)
如果包含类中的程序集(exe或dll),PowerShell可以通过[System.Reflection.Assembly]::LoadFile("PathToYourAssembly")
加载它
或在V2
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();
答案 1 :(得分:2)
我认为没有必要。您可以从PowerShell访问几乎整个.NET Framework。我敢肯定他们没有创造任何包装来做它。
答案 2 :(得分:1)
至少在V1中处理PowerShell中的接口是非常困难的,所以请在课堂上避免这些。在PowerShell中,只需要一个简单的[reflection.assembly] :: Load或LoadFile。
答案 3 :(得分:0)
我会在C#中编写一个Cmdlet,它接受一堆参数并吐出你想要的XML。然后你就可以使用Powershell中的Cmdlet来管理它。 我希望这有帮助!