繁体   English   中英

从powershell管道中删除命令

[英]Remove Command from 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

现在,我可以将此脚本更改为

PS> Command-One -Param1 | Command-Three -Param3

无需重新初始化$PS 我没有找到像DelCommand这样的方法来删除管道中的最后一个命令。

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

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

$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}

如果要清除它们,请在“命令”属性上运行“清除方法”

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

Commands
--------
{}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM