Назад | Перейти на главную страницу

Доступ к свободному пространству физических дисков по сценарию Windows 2012 R2?

Есть ли способ получить доступ к свободному пространству физических дисков, составляющих пул хранения в Windows Server 2012?

Я недавно столкнулся с проблемой нехватки места и могу видеть пространство, выделенное на каждом диске через графический интерфейс, но, похоже, не могу найти способ написать его в Powershell (или vbscript / wmi или cmd) , так как я хочу формировать регулярные отчеты.

В Get-PhysicalDisk командлет содержит информацию, необходимую для расчета свободного места. В частности, он возвращает тип объекта, который содержит следующие свойства:

  • AllocatedSize (например, использованное пространство)
  • Size (например, емкость)

Вооружившись этими знаниями, мы можем сделать простой однострочник, чтобы вернуть свободное пространство всех физических дисков в системе (игнорируя на данный момент, какие из них являются членами виртуального диска или пула хранения:

Get-PhysicalDisk | Select FriendlyName,Size,@{L='Free Space';E={$_.Size-$_.AllocatedSize}}

Но все возвращаемые значения находятся в байтах, что не очень полезно на современных больших дисках. Вероятно, вы захотите отформатировать результаты в ГБ или ТБ следующим образом:

Get-PhysicalDisk | Select FriendlyName,@{L='Capacity';E={"{0:N2}GB" -f ($_.Size/1GB)}},@{L='Free Space';E={"{0:N2}GB" -f (($_.Size-$_.AllocatedSize)/1GB)}} | Sort 'Free Space'
Get-PhysicalDisk | Select FriendlyName,@{L='Capacity';E={"{0:N2}TB" -f ($_.Size/1TB)}},@{L='Free Space';E={"{0:N2}TB" -f (($_.Size-$_.AllocatedSize)/1TB)}} | Sort 'Free Space'

Итак, теперь у нас есть команда, которая красиво перечислит емкость и свободное пространство всех физических дисков в системе. Но нам нужны только физические диски, составляющие определенный пул хранения. Как оказалось, это довольно просто с Get-StoragePool и конвейер собственных объектов PowerShell:

Get-StoragePool 'MyPool' | Get-PhysicalDisk | Select FriendlyName,@{L='Capacity';E={"{0:N2}TB" -f ($_.Size/1TB)}},@{L='Free Space';E={"{0:N2}TB" -f (($_.Size-$_.AllocatedSize)/1TB)}} | Sort 'Free Space'

Вы также запрашиваете диски, связанные с виртуальным диском, с помощью Get-VirtualDisk:

Get-VirtualDisk 'MyVD' | Get-PhysicalDisk | Select FriendlyName,@{L='Capacity';E={"{0:N2}TB" -f ($_.Size/1TB)}},@{L='Free Space';E={"{0:N2}TB" -f (($_.Size-$_.AllocatedSize)/1TB)}} | Sort 'Free Space'