VMWare PowerCLI Получить DiskUsage отключенных виртуальных машин

Я создаю сценарий, который получает все виртуальные машины и показывает DiskSpace. Проблема в том, что если виртуальный компьютер выключен, он не будет отображать используемое пространство диска.

Вот два примера: Первый с включенной виртуальной машиной:

PowerCLI C:\> Get-VM sluwv0039

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
sluwv0039            PoweredOn  2        4.000

PowerCLI C:\> $VM = Get-VM sluwv0039
PowerCLI C:\> $VM.guest.disks

CapacityGB      FreeSpaceGB     Path
----------      -----------     ----
49.997          5.417           C:\

Пример два, где виртуальная машина выключена:

PowerCLI C:\> Get-VM sluwv0012

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
sluwv0012            PoweredOff 4        8.000


PowerCLI C:\> $VM = Get-VM sluwv0012
PowerCLI C:\> $VM.guest.disks
PowerCLI C:\>

Примечание. Последняя строка - это вывод. Нет "CapacityGB" и т. Д.

2 ответа

Исправьте, это свойство читает из гостевой файловой системы, чтобы увидеть, сколько места осталось на разделе. В вашем случае диск C:\. Если виртуальная машина выключена, PowerCLI не сможет найти это свойство.

В качестве альтернативы, вы можете посмотреть на $vm.ExtensionData.Summary.Storage свойства и сделать некоторые грубые преобразования. Примечание: выходные данные в байтах, поэтому вам нужно преобразовать их в ГБ. Пример: $tempVM.ExtensionData.Summary.Storage.Committed / 1GB

Это не будет точно, но это будет лучше, чем вообще ничего.

Вот пример скрипта для отображения спецификации VM:

Get-Vm | Имя объекта выбора, PowerState, VMHost, NumCPU, MemoryGB, ProvisionedSpaceGB, @ {N = "HostName"; E = {@ ($.guest.HostName)}}, @ {N = "Шлюз"; E = {@ ($.ExtensionData.Guest.IpStack.IpRouteConfig.IpRoute.Gateway.IpAddress [0])}}, @ {N = "DNS"; E = {$.ExtensionData.Guest.IpStack.DnsConfig.IpAddress}}, @ {N = "IPAddress"; E = {@ ($.guest.IPAddress-like "192.168. *")}}, @ {N = "Nics"; E = {@ ($.guest.Nics)}}, @ { N = "Хранилище данных"; E = {@ ($ | Get-DataStore)}}, @ {N = "Диски"; E = {@ ($.guest.Disks)}}, Версия, @ {N = "Состояние "; E = {@ ($.guest.State)}}, @ {N =" OS "; E = {@ ($ _. Guest.OSFullName)}}

пример вывода выглядит так:

Имя Состояние VMHost NumCpu MemoryGB PowerState ProvisionedSpaceGB Версия IPAddress HostName ОС Диски Диски VMwareTools Gateway DNS Test Запуск 192.168.32.100 2 1 PoweredOn 43.1085147 v8 192.168.122.1 Elenoon Ubuntu Linux (64-разрядная версия) Сетевой адаптер 1:VM Сетевой сетевой адаптер 2: локальный: Емкость:17167286272, Свободное пространство:14212493312, Путь:/ Емкость:15188623360, Свободное пространство:15154872320, Путь:/media/files Емкость:10724835328, Свободное пространство:10672824320, Путь:/var/log Емкость:973770752, Свободное пространство:6901391 boot guestToolsRunning 127.0.0.1

надеюсь быть полезным;)

Другие вопросы по тегам