例如,如果我们运行以下命令:
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
?
最后,最好的选择是第二个?还是它们之间没有区别?
谢谢。