PowerShell C#运行命令无效

时间:2017-08-04 09:11:30

标签: c# powershell

我有下一个代码:

ExecutePowerShellCommand("Get-NetAdapter");

接下来是我试图调用此方法的方法:

ExecutePowerShellCommand("Get-Process");

此类代码无效的问题,我不知道为什么。我想拥有与控制台相同的输出,但在我的应用程序中。每次我运行代码时,我都会在调试附加模式中获得不同的异常,例如:   - 操作取消异常   - 找不到'Event.Format.ps1xml'文件。当我把这个文件放到他的搜索文件夹时,我正在收到下一个文件的请求等。   - 接下来他找不到文件夹'C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules \ 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.ru”)

     

MSFT_NetAdapter(CreationClassName =“MSFT_NetAdapter”,DeviceID =   “{B03679B3-199A-43D8-9088-E919658424B1}”,SystemCreationClassName =   “CIM_NetworkPort”,SystemName =“w-KerbiczkovYuI.e-lab.icl.kazan.ru”)

我认为此输出中的每条记录都是针对接口的(我有4个接口)。

如果我在PowerShell控制台中工作 - 没什么不好的,一切都按预期工作。 如果我正在尝试执行,例如:datatable.Select().OrderBy(u => u["ColName"]).ToArray(); - 没有例外,我得到了结果。与PS控制台不同,但在VS中无一例外。

我做错了什么?如何在我的应用程序中获得预期结果并获得与PowerShell控制台相同的输出?

1 个答案:

答案 0 :(得分:0)

抱歉这个愚蠢的问题。我找到了答案。我想结束这个问题,但我不能在这里回答。 要在PS控制台中获得良好的输出,我需要在语句末尾添加命令:ps.AddCommand("Out-String")。请记住,您需要将输出重定向到Out-String命令。不要在这两个命令之间使用AddStatement。 我的问题的第二部分是奇怪的例外。我仍然不完全理解它们的本质,但据我所知,它们是内部powershell异常并且被powershell类捕获,因为我没有捕获任何此异常。调试器只是通知我他们。