gpt4 book ai didi

c# - 在 C# 中将 Powershell PSObject 作为 DataTable 返回

转载 作者:太空狗 更新时间:2023-10-29 23:29:09 28 4
gpt4 key购买 nike

我编写了一个 Powershell 脚本来读取 CSV 文件并从数据中返回一个预定的集合。以下是所述脚本的示例输出。

Count     Name
------ ------
12 Rubies
3 Pearls
20 Emeralds

我可以通过将结果存储在 PSObject 中来获取 C# 中的结果,如下所示:

var shell = PowerShell.Create();
shell.Commands.AddScript("C:\\Scripts\\Powershell\\Get-MyData.ps1");
Collection<PSObject> results = shell.Invoke();

现在,当我期待单个对象时,我能够获取每个值并将它们分配给这样的变量:

foreach (PSObject psObject in results)
{
localVariable = Convert.ToString(psObject.Properties["Name"].Value);
}

但是,我无法将此解决方案转换为动态解决方案。也就是说,行数预计会有所不同。因此,我之前在源是 SQL 数据库时使用类似于发布的解决方案实现了这个 here所以我假设数据表应该是可行的方法,但我无法让它在这种情况下工作。有什么想法或建议吗?谢谢!

注意:这里的 Powershell 脚本组件是强制性的,因为它包括其他机制来制定输出,所以虽然我可以使用 C# 从 CSV 文件中读取,但这根本不是一个选项。

最佳答案

我从您的问题中了解到,您希望拥有 DataTable 以进行进一步的数据处理,并且希望在您各自的集合中使用它。

你可以这样进行:

DataTable dt=new DataTable();
dt.Colums.Add("Count");
dt.Colums.Add("Name");
foreach (PSObject psObject in results)
{
foreach(PSPropertyInfo prop in psObject.Properties)
{
var count=prop.Name;
var name=prop.Value;
//In other words generate output as you desire.
dt.Rows.Add(count,name);
}
}

希望对您有所帮助。

文档存在:Doc 1Doc 2

关于c# - 在 C# 中将 Powershell PSObject 作为 DataTable 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41295038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com