从powershell管道中删除命令

从powershell管道中删除命令,powershell,pipeline,Powershell,Pipeline,如果我理解正确的话。使用AddCommand()将命令添加到管道中。这意味着例如 $PS = [PowerShell]::Create() $PS.AddCommand("Command-One").AddParameter("Param1"); $PS.AddCommand("Command-Two").AddParameter("Param2"); $PS.Invoke(); 将调用以下脚本: PS> Command-One -Param1 | Command-Two -Param2

如果我理解正确的话。使用
AddCommand()
将命令添加到管道中。这意味着例如

$PS = [PowerShell]::Create()
$PS.AddCommand("Command-One").AddParameter("Param1");
$PS.AddCommand("Command-Two").AddParameter("Param2");
$PS.Invoke();
将调用以下脚本:

PS> Command-One -Param1 | Command-Two -Param2
现在,我可以将此脚本更改为

PS> Command-One -Param1 | Command-Three -Param3
无需重新初始化
$PS
?我没有找到像
DelCommand
这样的方法从管道中删除最后一个命令


第二个问题是成功执行
Invoke()
是否会清除所有挂起的命令,使管道为空。

是的,可以。这些命令包含在从集合继承的中。要删除第二个命令并添加第三个命令,可以执行以下操作:

$PS.Commands.Commands.RemoveAt(1)
$PS.AddCommand("Command-Three").AddParameter("Param3")
第二个问题:如果我理解正确,您想知道在使用Invoke方法后,命令是否从CommandCollection中清除,而保留为空?不,情况并非如此:

PS> $PS = [Powershell]::Create()
PS> $PS.AddCommand("New-Item").AddParameter("Name", "File.txt").AddParameter("Type","File")
PS> $PS.AddCommand("Remove-Item").AddParameter("Path", "File.txt")
PS> $PS.Invoke()
PS> $PS.Commands

Commands
--------
{New-Item, Remove-Item}
如果要清除它们,请在Commands属性上运行clear方法

PS> $PS.Commands.Clear()
PS> $PS.Commands

Commands
--------
{}

你的回答非常完美。巨大的+