首页 > 解决方案 > 在 Powershell 中作为副作用输出

问题描述

我一边Select-Object走一边想从选择中输出。

我可以使用 $_、变量或循环,但希望有一个更好的实现,
它只是作为副作用输出到控制台并继续,比如

Get-Whatever | Pipe-Out Name, Phone | Do-Whatever Surname, Address | ...

我的示例字符串是

Get-VM  | Select-Object VMId | Get-VHD | Select-Object path, parentpath | Format-List

这给了我大致的输出

Path                           ParentPath
----                           ----------
C:\Users\...\Ubuntu...avhdx    C:\Users\...\Ubuntu.vhdx
C:\Users\...\Foss...avhdx      C:\Users\...\Foxx..vhdx

我也想Name从哪里来Get-Vm。( Get-VM | Select-Object Name)。

Name      Path                           ParentPath
----      ----                           ----------
Ubuntu    C:\Users\...\Ubuntu...avhdx    C:\Users\...\Ubuntu.vhdx
Foss      C:\Users\...\Foss...avhdx      C:\Users\...\Foxx..vhdx

标签: powershell

解决方案


我没有那个命令,但是有一个 -PipelineVariable 通用参数。

get-vm -pipelinevariable vm | get-vhd |
  select-object @{n='name'; e={$vm.name}}, path, parentpath 

推荐阅读