PowerShell合并FSRM配额查询统计与详情为统一输出的问题咨询
PowerShell FSRM配额信息整合输出方案
你可以先一次性拉取所有配额数据避免重复查询,再将汇总值和明细整合输出,以下是两种常用实现方式:
方式1:明细表格末尾追加汇总行
所有信息集中在同一个表格内,可读性更强:
# 替换为你要查询的目标路径 $pfad = "你的目标路径" # 一次性获取所有配额对象,避免重复调用接口 $allQuotas = Get-FsrmQuota -Path $pfad # 计算总配额大小(单位GB,保留0位小数,和你原有逻辑对齐) $totalSizeGB = [math]::Round(($allQuotas | Measure-Object -Property Size -Sum).Sum / 1GB, 0) # 生成明细表格+末尾汇总行 $allQuotas | Select-Object Description, Path, @{Label="Size GB"; Expression = { [math]::Round($_.Size / 1GB, 0) }}, @{Label="PeakUsage GB"; Expression = { [math]::Round($_.PeakUsage / 1GB, 0) }}, @{Label="Usage GB"; Expression = { [math]::Round($_.Usage / 1GB, 0) }} | ForEach-Object { $_ } -End { # 追加汇总行 [PSCustomObject]@{ Description = "### 总配额汇总 ###" Path = "" "Size GB" = $totalSizeGB "PeakUsage GB" = "" "Usage GB" = "" } } | Format-Table -AutoSize
方式2:汇总信息+明细表格分开输出
如果需要明确区分汇总和明细数据,可以用这种结构:
# 替换为你要查询的目标路径 $pfad = "你的目标路径" $allQuotas = Get-FsrmQuota -Path $pfad $totalSizeGB = [math]::Round(($allQuotas | Measure-Object -Property Size -Sum).Sum / 1GB, 0) # 输出汇总信息 Write-Host "`n===== 指定路径FSRM配额总大小:$totalSizeGB GB =====`n" # 输出明细表格 $allQuotas | Format-Table Path, Description, @{Label="Size GB"; Expression = { "{0:F0}" -f ($_.Size/1GB) }}, @{Label="PeakUsage GB"; Expression = { "{0:F0}" -f ($_.PeakUsage/1GB) }}, @{Label="Usage GB"; Expression = { "{0:F0}" -f ($_.Usage/1GB) }} -AutoSize
说明
两种方案都只调用了一次Get-FsrmQuota,比原脚本两次调用的执行效率更高,配额数量较多时差异更明显。如果需要调整数值保留的小数位数,修改Round方法的第二个参数即可,比如改为1就是保留1位小数。
内容的提问来源于stack exchange,提问作者KaeperKing
相关产品推荐
相关产品推荐

