Powershell 中的不同输出(可能 trim 个对象?!)

Different Outputs in Powershell (possible to trim Objects?!)

我想从 vCenter 中的不同 VM 中提取所有 GuestOS 名称,并希望将它们逐一列出。应该修剪输出,以便只显示 Guest OS 名称(没有“$.Extension...”)-ExpandProperty 在这里是不够的。

$Oss=Get-VM | select {$_.ExtensionData.Guest.GuestFullName}  -Unique
$Oss

使用 PS1 文件或在 Powershell ISE 中输出:

$_.ExtensionData.Guest.GuestFullName : Microsoft Windows Server 2012(64 位)

$_.ExtensionData.Guest.GuestFullName : 美分OS 4/5/6/7 (64-bit)

$_.ExtensionData.Guest.GuestFullName : Linux 3.10.0-862.14.4.el7.x86_64 CentOS Linux 7.5.1804 版(核心版)

$_.ExtensionData.Guest.GuestFullName : SUSE Linux Enterprise 11(64 位)

输出 "normal" Powershell 控制台:

$_.ExtensionData.Guest.GuestFullName


微软 Windows Server 2008 R2(64 位)

微软 Windows Server 2012(64 位)

分OS 4/5/6/7(64 位)

分OS 4/5/6(32 位)

我希望得到与后者相同的输出(甚至没有 Extensiondata..)。有什么想法吗?

为什么还是不一样?

谢谢!

我相信您正在尝试检索子 属性 对象的 属性 值,请参阅此 link 中的示例 9 了解更多详细信息:

PowerShell Select Object

Get-VM | Select @{N="GuestFullName";E={$_.ExtensionData.Guest.GuestFullName}}