gpt4 book ai didi

c# 如何从字符串导入powershell模块

转载 作者:行者123 更新时间:2023-11-30 21:48:48 26 4
gpt4 key购买 nike

我正在使用 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();

关于c# 如何从字符串导入powershell模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com