【发布时间】:2012-05-22 01:09:15
【问题描述】:
我必须从 VB.NET 程序中调用 PS 命令。如果我正在调用标准 PS 命令,这可以正常工作,但如果我必须调用位于 3rd 方模块中的命令,我似乎无法使其工作。在 PS 控制台上,我可以输入Import-Module MyModule,然后我可以调用该模块中的命令。我尝试了以下方法,但它不起作用,我仍然无法从模块内访问我的命令:
Dim PowerShell As Management.Automation.PowerShell = PowerShell.Create()
Dim PowerShellCommand As New PSCommand()
Dim PowerShellCommandResults As Object
PowerShellCommand.AddScript("Import-Module MyModule")
PowerShellCommand.AddScript("Get-MyCommand | Out-String")
PowerShell.Commands = PowerShellCommand
PowerShellCommandResults = PowerShell.Invoke()
如何使用上面的代码示例做到这一点?除非必须,否则我不想将所有内容都更改为 Runspace 类。
【问题讨论】:
-
该答案使用 Runspace 类。我已经知道我可以使用那个类来做到这一点,我的目标是不用那个类来做到这一点。
-
您是否收到错误消息?
PowerShellCommandResults有结果吗? -
没有错误(如果有我会发布它们)并且 PowerShellCommandResults 不包含任何内容。但是,如果我再次调用标准系统命令,则 PowerShellCommandResults 包含一个 ps 对象数组。显然对 import-module 的调用不起作用。但它确实可以在命令行中工作,或者如果我在代码中使用 Runspace 类。
标签: vb.net powershell