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

PowerShell过滤JSON数据时符合阈值的预期条目未返回问题

问题原因

  1. 你的JSON文件中所有数值字段都被双引号包裹,ConvertFrom-Json解析后,Workspace Usage字段的类型为字符串,而非数值类型。
  2. 你在筛选时把比较值75也加了双引号,触发的是字符串按字符顺序比较,而非数值大小比较:
    • 字符串"108.9413"和"75"比较时,第一个字符'1'的ASCII码小于'7',因此整体被判定为小于"75",不符合筛选条件
    • 字符串"81.2462"首字符'8'大于'7'、"78.5773"首字符等于'7'且第二位'8'大于'5',因此这两个条目被保留

解决方法

方法1:筛选时临时转换字段类型

只需要在Where-Object判断时把Workspace Usage转成数值类型,同时去掉比较值75的双引号即可,修改后代码如下:

$variable = Get-Content "export.json" | ConvertFrom-Json
$logs = $variable | Where-Object { [double]$_.'Workspace Usage' -ge 75 } 
Write-Output $logs

方法2:解析后统一转换所有数值字段类型

如果后续还需要对其他数值字段做计算,可以在解析JSON后统一把对应字段转成数值类型,避免后续重复转换:

$variable = Get-Content "export.json" | ConvertFrom-Json | ForEach-Object {
    $_.'Workspace Allowance' = [double]$_.'Workspace Allowance'
    $_.'Workspace Usage' = [double]$_.'Workspace Usage'
    $_.'Workspace Size Free' = [double]$_.'Workspace Size Free'
    $_.'Percentage Utilization' = [double]$_.'Percentage Utilization'
    $_.'Predicted Usage' = [double]$_.'Predicted Usage'
    $_
}
$logs = $variable | Where-Object { $_.'Workspace Usage' -ge 75 } 
Write-Output $logs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:27:03