对上一个对象的PowerShell/PowerCLI引用
我正在做一个简单的报告一行,我不能让它工作 我正在通过cmdlet对上一个对象的PowerShell/PowerCLI引用,powershell,powercli,Powershell,Powercli,我正在做一个简单的报告一行,我不能让它工作 我正在通过cmdletGet-VMHost检索ESXi主机获取VMHost通过管道传输到获取VMHostSysLogServer 作为输出,我得到主机和端口属性。我想显示以下属性: 名称(从获取VMHost) 主机和端口(都来自获取VMHostSysLogServer) 如何实现这一点?这里有一个解决方案,它使用您想要的属性构建自定义对象: Get-VMHost | ForEach-Object { $SysLog = $_ | Get-
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对象循环遍历由
返回的每个VM主机(通过Get-VMHost
$\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对象循环遍历由
返回的每个VM主机(通过Get-VMHost
$\ucode>表示为当前管道项)
- 获取到
$SysLog
- 循环所有syslogserver,构建所需属性的哈希表
@{}
- 使用
使用返回到管道的哈希表中的属性输出对象newobject
获取VMHost
之前添加$YouVar=
如果要将结果发送到另一个接受管道输入(如导出CSV)的cmdlet,可以直接将其作为结束,只需在最后一次关闭后附加
|导出CSV您的.CSV
。这是使用ForEach对象
作为外部循环的好处,它支持管道。您是指Get-VMHostSysLogServer
cmdlet吗?是的。但事实上,问题是如何显示名称“在管道之前”并显示其余内容。您是指Get-VMHostSysLogServer
cmdlet吗?是的。但事实上,问题是如何显示“管道前”的名称和其他名称。非常感谢您的帮助Mark。我特别感谢你解释一下所有这些是如何协同工作的。这将使我的生活更轻松,以便将来使用PowerCLI“享受乐趣;”)非常感谢你的帮助,马克。我特别感谢你解释一下所有这些是如何协同工作的。这将使我的生活更轻松,以便将来使用PowerCLI“享受乐趣;”)