对上一个对象的PowerShell/PowerCLI引用

对上一个对象的PowerShell/PowerCLI引用,powershell,powercli,Powershell,Powercli,我正在做一个简单的报告一行,我不能让它工作 我正在通过cmdletGet-VMHost检索ESXi主机获取VMHost通过管道传输到获取VMHostSysLogServer 作为输出,我得到主机和端口属性。我想显示以下属性: 名称(从获取VMHost) 主机和端口(都来自获取VMHostSysLogServer) 如何实现这一点?这里有一个解决方案,它使用您想要的属性构建自定义对象: Get-VMHost | ForEach-Object { $SysLog = $_ | Get-

我正在做一个简单的报告一行,我不能让它工作

我正在通过cmdlet
Get-VMHost
检索ESXi主机<代码>获取VMHost通过管道传输到
获取VMHostSysLogServer

作为输出,我得到
主机
端口
属性。我想显示以下属性:

  • 名称(从
    获取VMHost
  • 主机和端口(都来自
    获取VMHostSysLogServer

如何实现这一点?

这里有一个解决方案,它使用您想要的属性构建自定义对象:

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
    }
}
说明:

  • 使用ForEach对象循环遍历由
    Get-VMHost
    返回的每个VM主机(通过
    $\ucode>表示为当前管道项)
  • 获取到
    $SysLog
  • 循环所有syslogserver,构建所需属性的哈希表
    @{}
  • 使用
    newobject
    使用返回到管道的哈希表中的属性输出对象
如果希望将结果捕获到变量中,只需在
获取VMHost
之前添加
$YouVar=


如果要将结果发送到另一个接受管道输入(如导出CSV)的cmdlet,可以直接将其作为结束,只需在最后一次关闭后附加
|导出CSV您的.CSV
。这是使用
ForEach对象
作为外部循环的好处,它支持管道。

这里有一个解决方案,它使用您想要的属性构建自定义对象:

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
    }
}
说明:

  • 使用ForEach对象循环遍历由
    Get-VMHost
    返回的每个VM主机(通过
    $\ucode>表示为当前管道项)
  • 获取到
    $SysLog
  • 循环所有syslogserver,构建所需属性的哈希表
    @{}
  • 使用
    newobject
    使用返回到管道的哈希表中的属性输出对象
如果希望将结果捕获到变量中,只需在
获取VMHost
之前添加
$YouVar=


如果要将结果发送到另一个接受管道输入(如导出CSV)的cmdlet,可以直接将其作为结束,只需在最后一次关闭后附加
|导出CSV您的.CSV
。这是使用
ForEach对象
作为外部循环的好处,它支持管道。

您是指
Get-VMHostSysLogServer
cmdlet吗?是的。但事实上,问题是如何显示名称“在管道之前”并显示其余内容。您是指
Get-VMHostSysLogServer
cmdlet吗?是的。但事实上,问题是如何显示“管道前”的名称和其他名称。非常感谢您的帮助Mark。我特别感谢你解释一下所有这些是如何协同工作的。这将使我的生活更轻松,以便将来使用PowerCLI“享受乐趣;”)非常感谢你的帮助,马克。我特别感谢你解释一下所有这些是如何协同工作的。这将使我的生活更轻松,以便将来使用PowerCLI“享受乐趣;”)