Acesso com scripts do Windows 2012 R2 ao espaço livre de discos físicos?

3

Existe uma maneira de acessar o espaço livre das unidades físicas que compõem um pool de armazenamento no Windows Server 2012?

Acabei de encontrar um problema com a falta de espaço e posso ver o espaço alocado em cada unidade através da GUI, mas não consigo encontrar uma maneira de fazer o script em Powershell (ou vbscript / wmi ou cmd), como eu quero gerar relatórios regulares.

    
por r3adm3 16.01.2014 / 23:35

1 resposta

2

O cmdlet Get-PhysicalDisk tem a informação que você precisa calcular o espaço livre. Especificamente, ele retorna um tipo de objeto que contém as seguintes propriedades:

  • AllocatedSize (por exemplo, espaço usado)
  • Size (por exemplo, capacidade)

Munido desse conhecimento, podemos fazer um one-liner básico para retornar o espaço livre de todas as unidades físicas no sistema (ignorando no momento quais são os membros de um disco virtual ou pool de armazenamento:

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

Mas todos os valores retornados estão em Bytes, o que não é muito útil nos grandes discos de hoje. Você provavelmente deseja formatar os resultados para GB ou TB da seguinte forma:

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'

Portanto, agora temos um comando que listará bem a capacidade e o espaço livre de todos os discos físicos no sistema. Mas queremos apenas os discos físicos que compõem um pool de armazenamento específico. Acontece que isso é muito fácil com Get-StoragePool e o objeto nativo do 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'

Você também consulta os discos associados a um disco virtual com 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'
    
por 17.01.2014 / 07:24