簡體   English   中英

C#如何從字符串導入Powershell模塊

[英]c# how to import a powershell module from a string

我正在使用c#,並且想使用import-module導入Powershell腳本。 但是我不想在磁盤上有.psm1文件。 我想將其硬編碼在我的代碼上,例如在字符串中,然后將其導入。

那可能嗎?

我能找到的所有示例都是這樣的:

pipeline.Commands.Add("Import-Module");
var command = pipeline.Commands[0];
command.Parameters.Add("Name", @"G:\PowerShell\PowerDbg.psm1")

或類似的東西:

var ps = PowerShell.Create(myRS);
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:\...\PowerDbg.psm1")
ps.Invoke()

但是,正如我上面所說,我不想從磁盤讀取文件。 我希望對其進行硬編碼,以避免出現多個文件。 我想要一個exe上的所有內容,僅此而已。 我找不到辦法,不勝感激。

我要使用import-module的原因是,在導入模塊后,我想執行以下操作:

get-command -module <whatever>

並獲取其所有功能的列表。 從腳本列出功能的任何其他方法也可能會有所幫助。

謝謝。

您在尋找New-Module ; 它完全符合您的要求。

從TechNet頁面(解釋為):

New-Module -ScriptBlock {
    $SayHelloHelp="Type 'SayHello', a space, and a name."
    function SayHello ($name) { 
        "Hello, $name" 
    } 
    Export-ModuleMember -function SayHello -Variable SayHelloHelp
} -Name PowerDbg

C#示例(未經測試):

string moduleContents = @"...";
pipeline.Commands.Add("New-Module");
var command = pipeline.Commands[0];
command.Parameters.Add("ScriptBlock", moduleContents);
command.Parameters.Add("Name", "PowerDbg");
pipeline.Invoke();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM