从C#获取PowerShell当前状态(或上下文)的信息

时间:2011-04-03 19:30:22

标签: c# powershell

我见过一些允许从C#加载特定PowerShell脚本的代码示例,然后从脚本中调用特定函数:

// "dot-source my functions"
ps.AddScript(". .\MyFunctions.ps1", $false)
ps.Invoke()

我的问题是 - 现在已执行此操作,此文件中的所有函数都已全局加载;有没有办法从C#代码中将它们作为对象访问?

我希望能够从代码中看到哪些函数已加载到全局上下文中,然后对它们进行分析(参见参数列表等)。

这一切都可能吗?

由于 利奥尔

2 个答案:

答案 0 :(得分:3)

不确定。有很多方法。也许最简单的是调用“dir函数:\”。现在,最后一句话可能会让你的面条稍微烘烤,但这就是我要做的事情。它返回一组FunctionInfo实例,其上有大量元数据。

答案 1 :(得分:2)

如果您使用v2,另一个类似的选项是将您的PS1文件转换为PSM1(PowerShell模块)。然后从C#中你可以使用命令

import-module path\to\module\myfunctions.psm1

从那里,您可以发出命令

get-command -module myfunctions