gpt4 book ai didi

c# - 使用 C# 运行 powershell

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:12 25 4
gpt4 key购买 nike

我正在尝试在 C# 中运行以下 powershell 命令

电源外壳:

"Get-ADDomainController -Filter * | Select-Object Name,OperatingSystem,OperatingSystemServicePack,Site | Format-List"

这是我的 C# 代码:

using (PowerShell inst = PowerShell.Create())
{
inst.AddCommand("Import-Module").AddParameter("Name", "ActiveDirectory");
inst.AddScript(command);
inst.Commands.AddCommand("Out-String");
foreach (PSObject result in inst.Invoke())
{
Console.WriteLine("'{0}'", result);
}

Console.ReadLine();
}

这工作正常并打印出结果,但我希望能够做的是遍历信息

所以例如打印的结果是这样的

姓名:xxx操作系统:Windows Server 2008操作系统服务包:服务包 2站点:xxx

我希望能够执行 foreach 并将名称、操作系统、站点添加到列表中。

希望这是有道理的

最佳答案

好的,这是我想要的修复方法,我想我会分享以防它对其他人有帮助

我做的第一件事是去掉 powershell 中的 Format-List 命令,然后我可以使用以下 C# 代码遍历结果并将其放入列表中

List<DomainControllerLists> dcList = new List<DomainControllerLists>();
using (PowerShell inst = PowerShell.Create())
{
inst.AddCommand("Import-Module").AddParameter("Name", "ActiveDirectory");
inst.AddScript(command);
Collection<PSObject> results = inst.Invoke();
foreach (PSObject obj in results)
{
dcList.Add(new DomainControllerLists() { Name = obj.Members["Name"].Value.ToString(), OperatingSystem = obj.Members["OperatingSystem"].Value.ToString(), OperatingSystemServicePack = obj.Members["OperatingSystemServicePack"].Value.ToString(), Site = obj.Members["Site"].Value.ToString() });
}
}
return dcList;

现在返回一个包含我需要的信息的列表您可以通过将 foreach 循环转换为 LINQ 语句来完善它

关于c# - 使用 C# 运行 powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971237/

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