Различные выходы в Powershell (можно обрезать объекты ?!) - PullRequest
0 голосов
/ 23 января 2019

Я хотел бы вытащить все имена GuestOS из разных виртуальных машин в vCenter и сделать так, чтобы они были перечислены один под другим. Выходные данные должны быть обрезаны, чтобы отображалось только имя гостевой ОС (без «$ .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: CentOS 4/5/6/7 (64-разрядная версия)

$ _. ExtensionData.Guest.GuestFullName: Linux 3.10.0-862.14.4.el7.x86_64 CentOS Linux выпуск 7.5.1804 (Core)

$ _. ExtensionData.Guest.GuestFullName: SUSE Linux Enterprise 11 (64-разрядная версия)

Вывод "нормальной" консоли Powershell:

$ _. ExtensionData.Guest.GuestFullName


Microsoft Windows Server 2008 R2 (64-разрядная версия)

Microsoft Windows Server 2012 (64-разрядная версия)

CentOS 4/5/6/7 (64-разрядная версия)

CentOS 4/5/6 (32-разрядная версия)

Я бы хотел получить такой же вывод, как и последний (или даже без Extensiondata ..). Есть идеи?

А почему все равно?

спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Я полагаю, что вы пытаетесь получить значение свойства под-свойства объектов, для получения более подробной информации см. Пример 9 в этой ссылке:

PowerShell Select Object

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