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

如何将PowerShell处理JSON的输出转为字符串并拼接至文本控件?

问题描述

我是Stack Overflow、PowerShell和ObjectGraph的新手,希望增强现有程序:把一段PowerShell代码的输出转为字符串,再将这个字符串拼接到$Item1_txt.Text的赋值语句里。

我的需求:

  • 基于给定的JSON和PowerShell代码,把这段PowerShell代码的输出保存为字符串(命名为$apple)。我觉得需要在管道里用| Out-String和.Trim(),但目前没法正确实现。

给定的JSON代码
{
     "id": "4fd338f7-746b-420b-9d7e-b41709e9a641",
     "RD": {
   
       "PDR": []
     },
     "TimeStamp": "2025-02-14T16:55:20.1433467Z",
     "NNTl": {
       "CD": [
         {
           "EntityType": "Occurrence",
           "Characteristics": [
             "OFGE"
             ],
           "Cardinality": "Many"
         },
         {
           "EntityType": "Operator",
           "Characteristics": [
             "ADL",
             "EsRO"],
           "Cardinality": "Many"
         }
       ],
         "RRXC": true
     
       },
       "EntitiesData": {
       "Entities": [
         {
           "Id": "b0000000-0000-0000-0000-00000000000b",
           "EntityType": "IHUR",
           "Ordinal": 0,
           "Characteristics": {
             "PBIL": {
               "StringValue": "DDDD"
             }
           }
         },
         {
           "Id": "833e2a7f-c173-4062-9cd6-2196432e0001",
           "EntityType": "Operator",
           "Ordinal": 0,
           "Characteristics": {
             "FN": {
               "StringValue": "Da"
             },
              "RatedOI": {
               "BoolValue": true
             },
              "fdfdf": {
               "DDFDF": "SDFDS43R5"
             }
           },
           "EntityCreationDateTime": "2025-02-12T19:42:59.2852792Z"
         },
         {
           "Id": "6fe06340-072f-49b2-8d5a-449e3db80002",
           "EntityType": "Operator",
           "Characteristics": {
             "Deleted": {
               "StringValue": "0"
             },
                   
              "RatedOI": {
               "BoolValue": false 
              }
           }
                 }
       
       ]
     },
     "OR": "FFFFF01"
    } 

现有PowerShell代码
Set-Location C:\Users\A187515\Downloads\
$file = Get-ChildItem -Path C:\Users\A187515\Downloads\ -Filter *.json | Sort-Object LastAccessTime -Descending | Select-Object -First 1
(Get-Content -Raw $file | ConvertFrom-Json) | ForEach-Object {
    foreach ($entity in $_.EntitiesData.Entities) {
        if ($entity.EntityType -eq 'Operator' -and $entity.Characteristics -issnot [array] -and $entity.Characteristics.RatedOI) {
            $entity | Select-Object `
                id, 
                @{ Name = 'RatedOI'; Expression = { 
                    $_.characteristics.RatedOI.boolValue } 
                }
        }
    }
} 

解决方案

要把代码输出转为字符串并赋值给$apple,只需在原有代码块末尾添加| Out-String | ForEach-Object { $_.Trim() },再将结果赋值给$apple即可。修改后的完整代码如下:

Set-Location C:\Users\A187515\Downloads\
$file = Get-ChildItem -Path C:\Users\A187515\Downloads\ -Filter *.json | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$apple = (Get-Content -Raw $file | ConvertFrom-Json) | ForEach-Object {
    foreach ($entity in $_.EntitiesData.Entities) {
        if ($entity.EntityType -eq 'Operator' -and $entity.Characteristics -issnot [array] -and $entity.Characteristics.RatedOI) {
            $entity | Select-Object `
                id, 
                @{ Name = 'RatedOI'; Expression = { 
                    $_.characteristics.RatedOI.boolValue } 
                }
        }
    }
} | Out-String | ForEach-Object { $_.Trim() }

关键说明:

  1. | Out-String:把管道中的对象转换成和控制台输出格式一致的字符串
  2. | ForEach-Object { $_.Trim() }:去除字符串首尾的空白字符,避免多余的换行或空格

之后你可以直接用$apple拼接$Item1_txt.Text,示例:

$Item1_txt.Text = "查询结果:$apple"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:58:11