2011-04-03 24 views
4

我已經看到了一些代碼樣本,允許加載從C#具體的PowerShell腳本,然後調用特定功能PowerShell的當前狀態(或上下文)獲取信息形成的腳本:從C#

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

我問題是 - 現在已經執行了,此文件中的所有功能都已全局加載;有沒有辦法將它們作爲來自C#代碼的對象訪問?我希望能夠從代碼中看到哪些函數已被加載到全局上下文中,然後分析它們(請參閱它們的參數列表等)。

這是可能的嗎?

感謝 利奧爾

回答

3

肯定。有很多方法。也許最簡單的就是調用「dir function:\」。現在,最後一句話可能會讓你的麪條稍微烤一點,但這是我會做的。它返回一組FunctionInfo實例,其中有豐富的元數據。

2

如果您使用的是v2,另一個類似選項是將您的PS1文件轉換爲PSM1(PowerShell模塊)。然後從C#你可以使用命令

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

從那裏,你可以發出命令

get-command -module myfunctions