我用这个作为参考:http://msdn.microsoft.com/en-us/library/dd182449(v=VS.85).aspx为什么从C#应用代码调用Powershell时返回null?
所以实现非常相似。我执行以下PowerShell命令通过下面的1-衬垫命令从预期计算机检索进程信息:
$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的快速手表[]值只会返回null。
任何帮助?
谢谢。
http://meta.stackexchange.com/questions/2950/应该,嗨,谢谢标语,并称呼,从帖子 – Kiquenet