我见过一些允许从C#加载特定PowerShell脚本的代码示例,然后从脚本中调用特定函数:
// "dot-source my functions"
ps.AddScript(". .\MyFunctions.ps1", $false)
ps.Invoke()
我的问题是 - 现在已执行此操作,此文件中的所有函数都已全局加载;有没有办法从C#代码中将它们作为对象访问?
我希望能够从代码中看到哪些函数已加载到全局上下文中,然后对它们进行分析(参见参数列表等)。
这一切都可能吗?
由于 利奥尔
答案 0 :(得分:3)
不确定。有很多方法。也许最简单的是调用“dir函数:\”。现在,最后一句话可能会让你的面条稍微烘烤,但这就是我要做的事情。它返回一组FunctionInfo实例,其上有大量元数据。
答案 1 :(得分:2)
如果您使用v2,另一个类似的选项是将您的PS1文件转换为PSM1(PowerShell模块)。然后从C#中你可以使用命令
import-module path\to\module\myfunctions.psm1
从那里,您可以发出命令
get-command -module myfunctions