Есть ли способ получить доступ к свободному пространству физических дисков, составляющих пул хранения в 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'