1

我有一个执行 powershell 脚本的引擎,当它们执行时,需要将一些 xml 反馈给调用者。引擎仅将 i/o 作为 idmef xml 消息。所以脚本需要返回一个类似格式的 xml 消息。我有一个类为我进行格式化,它希望脚本编写者使用它。

所以问题是我想包装 ac# 类以使其能够被 powershell 使用。

我看到了一些你可以使用方括号 mob 来引用 c# 类的东西,例如。

如何使 c# 可以像这样使用。我认为它需要被制作成类库并以某种方式加载到 powershell 运行时,但是如何加载。另外,当我从 c# 运行 powershell 时,我该如何将它添加到环境中。

任何帮助,将不胜感激。鲍勃。

4

4 回答 4

3

如果有一个包含类的程序集(exe 或 dll),PowerShell 可以通过[System.Reflection.Assembly]::LoadFile("PathToYourAssembly") V2 或在 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();
于 2009-07-27T00:08:41.280 回答
2

我不认为有什么是必要的。您可以从 PowerShell 访问几乎整个 .NET Framework。我敢肯定他们没有创建任何包装器来做到这一点。

于 2009-07-26T23:43:50.533 回答
1

至少在 V1 中,在 PowerShell 中处理接口是非常困难的,如果不是不可能的话,所以在你的类中避免这些。在 PowerShell 中,只需一个简单的 [reflection.assembly]::Load 或 LoadFile 即可。

于 2009-07-27T00:05:39.350 回答
0

我会用 C# 编写一个 Cmdlet,它接受一堆参数并输出你想要的 XML。然后,您可以通过管道将内容从 Powershell 中使用该 Cmdlet。我希望这有帮助!

于 2009-07-29T23:50:42.370 回答