我正在使用 c#,我想使用 import-module 导入 powershell 脚本。但是我不想在磁盘上有 .psm1 文件。我想将它硬编码在我的代码中,就像在字符串中一样,然后导入它。
那可能吗?
我能找到的所有例子都是这样的:
pipeline.Commands.Add("Import-Module");
var command = pipeline.Commands[0];
command.Parameters.Add("Name", @"G:\PowerShell\PowerDbg.psm1")
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
var ps = PowerShell.Create(myRS);
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:\...\PowerDbg.psm1")
ps.Invoke()
Run Code Online (Sandbox Code Playgroud)
然而,正如我上面所说,我不想从磁盘读取文件。我希望它被硬编码以避免多个文件。我想要 exe 上的所有内容,仅此而已。我找不到方法,非常感谢任何帮助。
我想使用 import-module 的原因是因为导入模块后我想做类似的事情:
get-command -module <whatever>
Run Code Online (Sandbox Code Playgroud)
并获取其所有功能的列表。列出脚本中的函数的任何其他方法也可能会有所帮助。
谢谢。
您正在寻找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
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |