我有执行的powershell脚本的发动机,并且当它们执行,需要 在一些XML给调用者反馈。发动机只需要I / O作为IDMEF XML消息。因此脚本需要返回一个类似格式的XML消息。我有一类做我的格式,我和它希望脚本编写者使用它。

所以问题是我想包装C#类,以使其能够通过的powershell使用。

我看到一些东西,你可以用方括号暴徒,是指C#类如:

如何让你的C#可使用这样的。我认为它需要被制成IIb类,不知何故加载到PowerShell运行时而是如何。此外,作为我正在从C#PowerShell的,我怎么在这一点上它添加到环境中。

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

有帮助吗?

解决方案

如果有一个组件(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();

其他提示

我觉得没有什么是必要的。您可以从PowerShell的访问几乎整个.NET框架。我敢肯定,他们并没有创造任何包装做到这一点。

与PowerShell的接口处理是如果不是不可能至少在V1非常困难的,所以要避免这些在你的类。在PowerShell中简单[reflection.assembly] ::负载或的LoadFile是所有需要。

我会写在C#中的cmdlet时采取了一堆参数,并吐出了所需的XML。然后你就可以通过管道东西放进它使用来自PowerShell的该cmdlet。 我希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top