Как проверить свободное место на диске виртуальной машины и увеличить размер до указанного с помощью сценария PowerShell

Мне нужна помощь со сценарием, чтобы проверить, составляет ли свободное место на диске 30 ГБ, а если оно меньше 30 ГБ, увеличьте его до разницы, чтобы свободное пространство стало 30. Мне нужно, чтобы это работало для 1500 виртуальных машин, чтобы его можно было автоматизировать для изменения размера 30 виртуальных машин за раз. При обращении за помощью в другом месте был предоставлен сценарий для выполнения того, что я запрашиваю, но не было дано никаких объяснений относительно того, как это работает, и не объясняет математику. Жесткий диск виртуальной машины имеет размер 70 ГБ и 24 ГБ свободного места. Так что мне нужно только 6 ГБ на жестком диске. Сценарий ниже:

$space = 30 * 1024 * 1024 * 1024 
$vm = Get-VMGuest $csvobject.vmname
if ($vm.Disks[0].FreeSpace -lt $space) {
   Get-HardDisk $vm.Vm | Select -first 1 | Set-HardDisk -CapacityGB (($vm.Disks[0].Capacity + $space - $vm.Disks[0].FreeSpace) / (1024 * 1024 * 1024))

Хотя я не совсем новичок в PowerShell, мне еще есть чему поучиться. Приведенный ниже сценарий не устанавливает для виртуального диска плоский размер ГБ, вместо этого он устанавливает его на 75,53621673583984. Это не то, что мне нужно. Кроме того, когда я запускаю сценарий на других дисках, я получаю следующее (см. Снимок экрана) до того, как он действительно запустит его.

Образ разрешения PowerShell

Я выбираю «Да для всех» и получаю следующую ошибку.

Set-HardDisk : 2/17/2021 2:14:22 PM Set-HardDisk        The specified size '78219344' is less than actual size of the virtual disk '79205464'.  
At line:4 char:44
+ ...  -first 1 | Set-HardDisk -CapacityGB (($vm.Disks[0].Capacity + $space ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-HardDisk], InvalidArgument
    + FullyQualifiedErrorId : Client20_VirtualDeviceServiceImpl_TryValidateHardDiskNewSize_InvalidSize,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.SetHardDisk
 

Я не понимаю ошибки. Похоже, что сценарий пытается установить дисковое пространство на 78219344 ГБ при чтении текущего размера диска как 79205464 ГБ. Я уверен, что неправильно читаю эту ошибку, но любая помощь в объяснении сценария и того, как он работает, и ошибка будет оценена. В конечном счете, мне просто нужен сценарий с оператором «if», который проверяет свободное место на диске виртуальной машины и, если оно меньше 30 ГБ, расширяет пространство на диске только на необходимую величину, равную 30 ГБ свободного места на диске.

0

Добавить комментарий

Ваш адрес email не будет опубликован.