PowerShell的C#运行命令我有下面的代码:没有工作
private void ExecutePowerShellCommand(string command)
{
try
{
Runspace rs = RunspaceFactory.CreateRunspace();
rs.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = rs;
ps.AddCommand(command);
var psOutput = ps.Invoke();
LogPSHeader();
foreach (var item in psOutput)
{
if (item == null) continue;
LogPS(item.BaseObject.ToString());
}
if (ps.Streams.Error.Count > 0) LogPS("ERROR");
LogPSEnding();
}
//rs.Close();
}
catch (Exception ex)
{
Log(ex.ToString());
}
}
接下来是如何我试图调用此方法:
ExecutePowerShellCommand("Get-NetAdapter");
,这样的代码不工作,我的问题不知道为什么。我想要在控制台中具有相同的输出,但在我的应用程序中。每当我runnig代码我得到不同的例外调试附加模式,如: - 操作取消异常 - 找不到'Event.Format.ps1xml'文件。当我把这个文件放到他搜索的文件夹时,我得到了下一个文件的请求等。 - 接下来,他找不到文件夹中的某个文件(我不记得文件的确切名称) 'C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ APPX'。 如果我想不是来自VS运行C#程序,但运行编译的exe我得到一个输出:
MSFT_NetAdapter(CreationClassName = “MSFT_NetAdapter” 的DeviceID = “{4C67B2DB-572B-4CB8- 9D0F-19AC7FE93B1B} “SystemCreationClassName = ”CIM_NetworkPort“ 的SystemName = ”w-KerbiczkovYuI.e-lab.icl.kazan.ru“)
MSFT_NetAdapter(CreationClassName = ”MSFT_NetAdapter“ 的DeviceID = ”{CBBC4607- 17BB-4FFB-A93F-A08F17472C8A}“,SystemCreationClassName = ”CIM_NetworkPort“,SystemName =”w-KerbiczkovYuI.e-lab.icl.kazan.ru“)
MSFT_NetAdapter(CreationClassName = “MSFT_NetAdapter” 的DeviceID = “{31950F9C-DF49-49A7-8BF9-CBD36F99D7CB}”,SystemCreationClassName = “CIM_NetworkPort” 的SystemName =“W-KerbiczkovYuI.e-lab.icl.kazan。る “)
MSFT_NetAdapter(CreationClassName = ”MSFT_NetAdapter“ 的DeviceID = ”{B03679B3-199A-43D8-9088-E919658424B1}“,SystemCreationClassName = ”CIM_NetworkPort“ 的SystemName =” W-KerbiczkovYuI.e-实验室。 icl.kazan.ru“)
我认为这个输出中的每个记录都是为接口(我有4 int erfaces)。
如果我在PowerShell控制台工作 - 没什么不好,一切都按预期工作。 如果我试图执行,例如:ExecutePowerShellCommand("Get-Process");
- 没有例外,我得到的结果。与PS控制台不一样,但VS中无一例外。
我做错了什么,我怎么能得到预期的结果,并具有相同的输出,在我的应用程序中的PowerShell控制台?