0

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

这是代码和一些屏幕截图:

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调试期间的对象,它只有相关数据的数组。由于隐私原因隐藏。 这是结果对象,它只有相关数据的数组

这是result调试期间的对象 > BaseObject 视图。对象的resultmembers 属性没有相关数据。 结果对象

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

执行时的输出将 System.Collections.Arraylist 作为输出

提前致谢。

4

1 回答 1

0

我通过创建一个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());
于 2021-07-16T04:28:35.883 回答