PowerShell格式 - 来自链中不同对象的列表

Sco*_*MVP 2 powershell

如何从管道链中的父对象输出属性?

例如:

get-vm | get-vmdisk | forEach {Get-VHDInfo $ _.DiskPath} | 选择-Property Path,ParentPath,VM.VMElementName

基本上它是我想知道的VM.VMElementName(我编写了这个语法).它不是直接对象(来自Get-VHDInfo),而是我想要获取值的祖父母(来自get-vm).

Sha*_*evy 5

您无法以您希望的方式从上游cmdlet获取值.您可以在调用get-vm后立即使用foreach-object并将值保存在变量中,然后将其作为新的计算属性分配回select-object.

get-vm | foreach-object{    
    $VMElementName = $_.VMElementName   
    get-vmdisk | forEach {Get-VHDInfo $_.DiskPath} | Select Path,ParentPath,@{Name='VMElementName';Expression={$VMElementName}}
} 
Run Code Online (Sandbox Code Playgroud)