c# - 为什么从 C# 应用程序代码调用 Powershell 时返回 null?

标签 c# .net powershell datatable

我将其用作引用:http://msdn.microsoft.com/en-us/library/dd182449(v=VS.85).aspx

所以实现非常相似。我正在执行以下 PowerShell 命令,以通过下面的 1-liner 命令从目标计算机检索进程信息:

$computer = "Remote.Computer.Here"; Get-Process -computer $computer | Sort-Object WorkingSet -desc | Select-Object -first 10 | Format-Table -property name, ID, @{Expression= {$_.WorkingSet/1mb};Label="MemoryLoad";} -auto

上面的命令在 PS 窗口中完美执行。但是,当从 C# 应用程序代码调用时,我没有得到任何返回。尤其是当我通过以下方式访问它时:

        PowerShell shell = PowerShell.Create();
        shell.AddScript(CmdletMap[PSVocab.OsProcLoad]);
        Collection<PSObject> obj = shell.Invoke();

        DataTable dt = new DataTable();
        dt.Columns.Add("ProcessName");
        dt.Columns.Add("ID");
        dt.Columns.Add("MemoryLoad");

        DataRow row;
        foreach (PSObject resultObject in obj)
        {
            row = dt.NewRow();
            row["ProcessName"] = resultObject.Members["name"].Value;
            row["ID"] = resultObject.Members["id"].Value;
            row["MemoryCol"] = resultObject.Members["MemoryLoad"].Value;

            dt.Rows.Add(row);
        }

快速查看 resultObject.Members[].Value 只会返回 null。

有什么帮助吗?

谢谢。

最佳答案

检查 shell.Streams.Error 以查看调用脚本时发生了什么错误。

关于c# - 为什么从 C# 应用程序代码调用 Powershell 时返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753708/

相关文章:

c# - GOTO 是退出双 Foreach 的唯一方法吗?

c# - 如果发生错误,如何使用命令行解析器库?

c# - 我可以在 C# 中读取 Outlook (2003/2007) PST 文件吗?

c# - 在不重新编译整个应用程序的情况下升级依赖的 DLL

powershell - 逐行处理HereString

c# - sql存储过程与代码,对于大量数据,哪个更好?

c# - 使用 Linq 从不包括特定成员列表的集合中选择项目的优化方法

azure - 转换为 Powershell 的工作 C# 代码会导致 SocketException

powershell - 如何从命令提示符以 "run as administrator"运行应用程序?

.Net 模式与 GOF