运行多个Powershell命令的最佳方法?

时间:2018-08-08 00:04:52

标签: c# powershell

例如,如果我们运行以下命令:

Get-VM 

如果我们有很多VM,则需要等待几秒钟以获取VM及其所有信息。

因此,为了进行优化,我们可以例如执行以下操作:

Get-VM | Select Name, Id

获取仅具有名称和ID的虚拟机。

但是如何在C#上做到最好? 我不确定代码是否会起作用,它只是想法的示例。 我从这里接受了这个想法-Run multiple powershell commands

“ Get-VM |选择名称,ID”的第一个示例:

List<Command> commandList = new List<Command>();

Command cmd = new Command("Get-VM");
cmd.Parameters.Add("par", str); //add some parameters -par "name"
commandList.Add(cmd);

Command cmd2 = new Command("Select Id, Name");
commandList.Add(cmd2);

Pipeline pipeline;
Collection<PSObject> Results = null;

foreach (Command command in commandList)
{   
    pipeline = runspacee.CreatePipeline();
    pipeline.Commands.Add(command);
    Results = pipeline.Invoke();
}  

是的,我知道我可以像脚本一样发送它-Command("Get-VM | Select Id, Name", true);

“ Get-VM |选择名称,ID”的第二个示例:

Runspace rs = RunspaceFactory.CreateRunspace();
PowerShell ps = PowerShell.Create();

ps.Runspace = rs;
ps.AddCommand("Get-VM").AddParameter("par", str); //add some parameters -par "name"
ps.AddStatement().AddCommand("Select").AddArgument("Id, Name");
ps.Invoke();

如果我理解正确,我的第一个示例将执行两次命令?首先Get-VM,然后Select Name, Id 而我的第二个示例一次将运行Get-VM | Select Name, Id

最后,最好的选择是第二个?还是它们之间没有区别?

谢谢。

0 个答案:

没有答案