运行 使用 C# 的 powershell
Running powershell with C#
我正在尝试 运行 C# 中的以下 powershell 命令
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;
现在 returns 包含我需要的信息的列表
您可以通过将 foreach 循环转换为 LINQ 语句来完善它
我正在尝试 运行 C# 中的以下 powershell 命令
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;
现在 returns 包含我需要的信息的列表 您可以通过将 foreach 循环转换为 LINQ 语句来完善它