Ваш код имеет дело только со свойством Size
, где очевидно, что вы также хотели бы Usage
.Чтобы отформатировать размер как целое число, вы используете -as [int]
.В приведенном ниже коде используется другой способ форматирования, вы можете прочитать о здесь .
Также мне нравится использовать Select-Object
перед передачей в Format-Table
, чтобы заранее ограничить количество свойств, но это зависит от вас, я думаю.
Get-FsrmQuota | Select-Object Path,
@{Label="Size GB"; Expression = { "{0:F0}" -f ($_.Size/1GB) }},
@{Label="Usage GB"; Expression = { "{0:F0}" -f ($_.Usage/1GB) }} |
Format-Table -AutoSize
Edit
Как прокомментировал mklement0, Select-Object
на самом деле имеет стоимость создания дополнительных промежуточных объектов.Следовательно, код можно упростить до этого:
Get-FsrmQuota | Format-Table Path,
@{Label="Size GB"; Expression = { "{0:F0}" -f ($_.Size/1GB) }},
@{Label="Usage GB"; Expression = { "{0:F0}" -f ($_.Usage/1GB) }} -AutoSize
Форматирование числа {0:F0}
округляет число до целого числа [1] и отображает результат без тысяч разделителей.Если вам нужны тысячи разделителей, вы также можете использовать {0:N0}
.
Может также рассмотреть вопрос о том, чтобы число было округлено с большей точностью, скажем, иметь два десятичных знака.В этом случае измените {0:F0}
на {0:F2}
.
[1] Интересно, что для форматирования строки .NET используется округление с половиной от нуля ,в отличие от [Math]::Round()
по умолчанию от полудня до четного округления.Это означает, что числа, оканчивающиеся на .5
, всегда округляются до F0
и N0
, тогда как [Math]::Round()
округляет .5
вниз , если целая часть является четное число .В .NET Core , начиная с версии 2.1, форматирование строк теперь, возможно, также использует округление до половины - см. документы