use*_*135 5 .net powershell pipeline c#-4.0 powershell-cmdlet
我需要使用 .NET 中的 CmdLets 组合多个 Power Shell 脚本的输出作为管道输出。
例如 :
Command-GetA  -combine  Command-GetB | Command-GetD
Run Code Online (Sandbox Code Playgroud)
所以我想通过管道发送和GetA的输出。是否有一种紧凑的方法可以使用 powershell 脚本或 .NET cmdlet 来执行此操作?除了将输出存储在数组中然后将其传递到管道等方法之外?GetBGetD
另一个复杂的例子可能是:
Command-GetA  -combine  ( Command-GetB | Command-GetD ) | Command-GetF
Run Code Online (Sandbox Code Playgroud)
这应该结合GetA并GetB|GetD作为管道输入发送到GetF
编辑:
如果我能做这样的事情那就太好了 - @( GetA ; GetB) -ConvertToASingleList | 获取C
因此OutputOfGetA和OutputOfGetB不应该在 上单独调用GetC。两者都应该作为组合数组或列表对象传递给GetC
小智 5
@PetSerAl 建议的解决方案似乎满足您的要求:
PS C:\> function Foo { 1..3 }
PS C:\> function Bar { 2..4 }
PS C:\> & { Foo; Bar | % { $_ + 2 } } | oh
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
脚本块将所有输出组合到一个数组中。此行为记录在about_Script_Blocks中:
脚本块以单个对象或数组的形式返回脚本块中所有命令的输出。
这给了我想要的最终结果:
$( 命令-GetA; 命令-GetB )| 小组结果 | 命令-GetC
因此,如果“GetC”是一个串联 cmdlet,则整个“GetC”cmdlet 代码仅对我的所有输入文件运行一次(每次运行“concat”时都会重新创建我的输出文件)
虽然上面所有的答案都是正确的,但我的要求有点不同:)
编辑:
太棒了!
,@(Command-GetA;Command-GetB)|Command-GetC
谢谢@PetSerAl
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5836 次  |  
        
|   最近记录:  |