You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何在Select-Object表达式内对两列做数学运算?

问题原因

返回OB异常是因为LogSize、LogSpaceUsed两个属性为带存储单位的非纯数值类型,直接做除法运算会触发类型匹配错误。

修复方案

方案1:沿用Select-Object实现

推荐直接复用命令自带的LogSpaceUsedPercent(已用日志空间百分比)计算,逻辑最简单:

Get-DbaDbLogSpace -SqlInstance serverName |
  Select-Object ComputerName, InstanceName, SqlInstance, Database, LogSize, 
                LogSpaceUsed, LogSpaceUsedPercent,
                @{Name="PercentFree"; Expression={100 - $_.LogSpaceUsedPercent}} | 
    Format-Table

如果需要手动通过总大小、已用大小做除法计算,需要先提取属性对应的纯字节数值,还可以通过[math]::Round控制小数保留位数:

Get-DbaDbLogSpace -SqlInstance serverName |
  Select-Object ComputerName, InstanceName, SqlInstance, Database, LogSize, 
                LogSpaceUsed, LogSpaceUsedPercent,
                @{Name="PercentFree"; Expression={[math]::Round(($_.LogSpaceUsed.TotalBytes / $_.LogSize.TotalBytes)*100,2)}} | 
    Format-Table

方案2:无需Select-Object的更优实现

Format-Table本身支持自定义计算列,可以省略Select-Object步骤,代码更简洁:

Get-DbaDbLogSpace -SqlInstance serverName |
  Format-Table ComputerName, InstanceName, SqlInstance, Database, LogSize, 
                LogSpaceUsed, LogSpaceUsedPercent,
                @{Name="PercentFree"; Expression={100 - $_.LogSpaceUsedPercent}}

内容的提问来源于stack exchange,提问作者JM1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:36:01