我正致力于简单报告单行,我无法让它发挥作用。
我正在通过cmdlet Get-VMHost
检索ESXi主机。 Get-VMHost
被传送到Get-VMHostSysLogServer
。
作为输出,我获得了Host
和Port
属性。我想显示以下属性:
Get-VMHost
)Get-VMHostSysLogServer
)。我怎样才能做到这一点?
答案 0 :(得分:0)
这是一个解决方案,它使用您想要的属性构建自定义对象:
Get-VMHost | ForEach-Object {
$SysLog = $_ | Get-VMHostSysLogServer
ForEach ($SysLogServer in $SysLog) {
$Result = @{
VMHost = $_.name
SysLogHost = $SysLogServer.Host
Port = $SysLogServer.Port
}
New-Object -TypeName PSObject -Property $Result
}
}
<强>解释强>
Get-VMHost
返回的每个VM主机(通过$_
表示为当前管道项)。$SysLog
@{ }
。New-Object
使用Hashtable中的属性输出对象,该属性将返回到管道。如果您想将结果捕获到变量,只需在$YouVar =
之前添加Get-VMHost
。
如果要将结果发送到另一个接受管道输入的cmdlet(例如Export-CSV),则可以直接将其作为结尾发送,只需在上次结束| Export-CSV Your.csv
后附加}
。这是使用ForEach-Object
作为外部循环的好处,它支持管道。