我需要将多个Power Shell脚本的输出组合在一起,使用.NET中的CmdLets作为管道输出。
例如:
Command-GetA -combine Command-GetB | Command-GetD
所以我想通过管道将GetA
和GetB
的输出发送到GetD
。有没有一种使用PowerShell脚本或.NET cmdlet执行此操作的简洁方法?除了将输出存储在数组中然后将其传递给管道之外的其他方法?
另一个复杂的例子可能是:
Command-GetA -combine ( Command-GetB | Command-GetD ) | Command-GetF
这应该将GetA
和GetB|GetD
结合起来作为管道输入发送到GetF
编辑:
如果我可以做这样的事情会很好 - @(GetA; GetB)-ConvertToASingleList | GetC
因此OutputOfGetA
和OutputOfGetB
不应在GetC
上单独调用。作为组合数组或列表对象,两者都应传递给GetC
答案 0 :(得分:1)
@PetSerAl建议的解决方案似乎符合您的要求:
author_name
publisher_key
脚本块将所有输出组合到一个数组中。 about_Script_Blocks中记录了此行为:
脚本块返回脚本块中所有命令的输出,可以是单个对象,也可以是数组。
答案 1 :(得分:0)
不是很紧凑,但我会这样做:
MultiLine
答案 2 :(得分:0)
这给了我理想的最终结果:
$(Command-GetA; Command-GetB)|小组结果|命令GETC
因此,如果" GetC"是一个连接的cmdlet,整个" GetC" cmdlet代码只对我的所有输入文件运行一次(每次运行时都会重新创建输出文件" concat")
虽然这里的所有上述答案都是正确的,但我的要求有点不同:)
编辑:
这很完美!
,@(Command-GetA; Command-GetB)| Command-GetC
谢谢@PetSerAl
答案 3 :(得分:0)
万一任何人都无法使用上面提到的怪异情况,您也可以使用-join。
EG。
-join($(Command-GetA), "," , $(Command-GetB))
这将导致一个适用于csv的字符串。