让PowerShell将结果传递给Pentaho

让PowerShell将结果传递给Pentaho,powershell,pentaho,pentaho-spoon,pentaho-data-integration,Powershell,Pentaho,Pentaho Spoon,Pentaho Data Integration,我有一个处理json字符串的PowerShell脚本。我的目标是将这个结果集传递给Pentaho,这样我就可以处理它并将其放入数据库表中 我的PowerShell脚本在Pentaho之外按预期工作。我可以解析文件并获得所需的信息,而不会出现任何问题。当我试图传递这些值时,Pentaho返回愚蠢的结果 这是我的剧本 $scriptMode = 'GetFileInfo' $json = '{ "building": [ { "buildingname": "NAPA Au

我有一个处理json字符串的PowerShell脚本。我的目标是将这个结果集传递给Pentaho,这样我就可以处理它并将其放入数据库表中

我的PowerShell脚本在Pentaho之外按预期工作。我可以解析文件并获得所需的信息,而不会出现任何问题。当我试图传递这些值时,Pentaho返回愚蠢的结果

这是我的剧本

$scriptMode = 'GetFileInfo'

$json = '{
"building": [
    {
        "buildingname": "NAPA Auto Parts",
        "files": [{
                "sheets": [{
                        "name": "BATTERY",
                        "results": [{
                                "filename": "BATTERY - 1679568711.xlsx",
                                "sku": "1679568711"
                            }
                        ]
                    }
                ],
                "name": "2.15.19.xlsx",
                "status": "processed",
                "fileId": "c586bba6-4382-42c4-9c29-bffc6f7fe0b6"
            }, {
                "name": "Oct-Nov 2018 11.30.18.xlsx",
                "errors": ["Unknown sheet name: TOILET PLUNGER"],
                "status": "failed",
                "fileId": "afa7c43f-26dc-421c-b2eb-45ad1e899c42"
            }
        ]
    },
    {
        "buildingname": "O''Reily Auto Parts",
        "files": [{
                "sheets": [{
                        "name": "ALTERNATOR",
                        "results": [{
                                "filename": "ALTERNATOR - 6.3.19 1629453444.xlsx",
                                "sku": "1629453444"
                            }
                        ]
                    }, {
                        "name": "OIL FILTER",
                        "results": [{
                                "filename": "OIL FILTER - 6.3.19 1629453444.xlsx",
                                "sku": "1629453444"
                            }
                        ]
                    }
                ],
                "name": "6.3.19.xlsx",
                "status": "processed",
                "fileId": "647089fe-9592-4e2b-984f-831c4acd4d9c"
            }
        ]
    }
]
}'

$psdata = ConvertFrom-Json -InputObject $json

IF ($scriptMode -eq "GetFileInfo") {

$psdata.building | foreach-Object {
    foreach ($File in $_.files)
    {
        [PSCustomObject]@{
            BuildingName = $_.buildingname
            FileName = $File.name
            fileId = $File.fileId
            Status = $File.status} 
    }
  }
}

ElseIF ($scriptMode -eq "GetErrorInfo") {

$psdata.building | foreach-Object {
    foreach ($File in $_.files)
    {
        [PSCustomObject]@{
            BuildingName = $_.buildingname
            Errors = $File.errors
            SheetName = $File.sheets.name
            fileId = $File.fileId} | Where-Object {$_.errors -ne $null}
    }
  }
}
下面是我的转换设置。我有一个表输入查询,它将根据我希望脚本执行的操作(获取文件信息或获取错误信息)设置PowerShell的run命令。

然后让“执行进程”步骤运行PowerShell命令

这是Pentaho中返回的内容与PowerShell返回的内容

我希望返回的结果与PowerShell返回的结果完全相同。我希望我可以在不将数据导出到其他格式的情况下完成这项工作。我们在Pentaho中只遇到Json输入步骤的问题,因此我们选择了PowerShell而不是Pentaho中的“修改的Javascript值”步骤


你知道我如何让它返回一个结果集(就像SQL查询返回的结果集)给Pentaho吗

最有可能的结果集返回的是整个内容,而不是您预期的“表格化”,它可能返回整个表格,所有表格都以一种长文本格式汇总,但仍然包含所有换行符/换行符

尝试在pentaho流中使用拆分步骤处理返回的字符串。首先,尝试使用分隔符为“${line.separator}”的“将字段拆分为行”。
从这里开始,您所要做的就是将整个内容拆分成pentaho中的表格。

最有可能的结果集是返回整个内容,而不是像您预期的那样“表格化”,它可能返回整个表格,所有表格都以一种长文本格式汇总,但仍然有所有的换行符/换行符

尝试在pentaho流中使用拆分步骤处理返回的字符串。首先,尝试使用分隔符为“${line.separator}”的“将字段拆分为行”。
从这里开始,您所要做的就是将整个内容拆分,直到它成为pentaho中的一个表。

在将数据返回pentaho之前,通过管道将数据传输到
Out String
Out String
将返回一个字符串,该字符串将尽可能与您在屏幕上看到的格式化输出相匹配,我应该在哪里将其添加到我的代码中?我在我的foreach部分之后添加了它,它返回数据的方式与我的版本相同。在返回到Pentaho之前,通过
Out String
导入数据-
Out String
将返回一个尽可能与您在屏幕上看到的格式化输出匹配的字符串,我将在哪里将其添加到我的代码中?我在foreach节之后添加了它,它以与我的版本相同的方式返回数据