微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C# 中遍历 PSObject 的 BaseObject 属性

如何解决如何在 C# 中遍历 PSObject 的 BaseObject 属性

我有一个在使用 .Invoke() 包时调用 System.Management.Automation 方法时返回的 PSObject 项目列表。在调试时,我可以在 BaSEObjectImmediateBaSEObject 属性中看到要打印的对象的值。但是,在使用 foreach 循环遍历结果并打印每个项目的 BaSEObjects 时,只会打印项目的类型 (System.Collections.ArrayList)。如何将 BaSEObjects 的值存储到变量中?

这是代码和一些截图:

using (var ps = PowerShell.Create())
{
    var results = ps.AddScript(File.ReadAllText(@".\PSScripts\test_func2.ps1")).Invoke();
    foreach (PSObject result in results)
    {
        if (result != null)
        {
             outList.Add(result.BaSEObject.ToString())
        }
    }
}

这是调试时的results对象,只有相关数据的数组。由于隐私原因隐藏。

This is the result object,which only has arrays of relevant data

这是调试期间的 result 对象 > BaSEObject 视图。 result 对象的 members 属性没有相关数据。

results object

这是我在执行上述代码时得到的输出

output on execution gives System.Collections.Arraylist as output

提前致谢。

解决方法

我通过创建 IList 对象并将我的 result 对象转换为 IList 解决了这个问题。然后我可以遍历 IList 变量的值。这里,res 是一个 List<String[]> 对象,声明为函数级作用域,可以保存 results 对象的所有值。

List<string> temp = new List<string>();
IList collection = (IList)result.BaseObject;
foreach(var x in collection)
{
    temp.Add((string)x);
}
res.Add(temp.ToArray());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?