java - 访问 PowerShell 对象中的文本。为什么它似乎不存储在数组中?

标签 java api powershell data-management

我从 SQL Server 表中获取了状态平面坐标,并用 100 个串联字符串填充了一个对象,这些字符串将用作 java 应用程序的输入。

$key = Invoke-Sqlcmd -Query "SELECT DISTINCT CONCAT('spc,'<spcZone>,',',
<northing>,',',<easting>, ',',<units>,',',<inDatum>,',',<outDatum>) as 
conversionString FROM <source table>;" -ServerInstance "<server>" -Database 
"<database>"

结果将是 100 个字符串,在数组中如下所示:

spc,2402,173099.419,503626.812,m,NAD83(2011),NAD83(2011)

然后,我使用 NOAA 的 gtk java 应用程序并运行所有 100 个要转换的观测值:

$result = FOREACH ($k in $key.conversionString) 
{
java -Dparms="$k" -jar H:\gtk\jtransform_thin.jar
}

一个观察结果的返回输出如下所示:

{
"ID":"1489004917960",
"nadconVersion":"5.0",
"srcLat":"40.0000000000",
"srcLatDms":"N400000.000000",
"srcLon":"-80.0000000000",
"srcLonDms":"W0800000.000000",
"destLat":"40.0000000000",
"destLatDms":"N400000.000000",
"destLon":"-80.0000000000",
"destLonDms":"W0800000.000000",
"sigLat":"0.000000",
"sigLon":"0.000000",
"srcEht":"100.000",
"destEht":"100.000",
"sigEht":"0.000",
"srcDatum":"NAD83(1986)",
"destDatum":"NAD83(1986)",
"spcZone":"PA S-3702",
"spcNorthing_m":76470.584,
"spcEasting_m":407886.482,
"spcNorthing_usft":250887.241,
"spcEasting_usft":1338207.566,
"spcNorthing_ift":250887.743,
"spcEasting_ift":1338210.243,
"spcConvergence":"-01 27 35.224524",
"spcScaleFactor":0.99999024,
"spcCombinedFactor":0.99997455,
"utmZone":"UTM Zone 17",
"utmNorthing":4428236.065,
"utmEasting":585360.462,
"utmConvergence":"00 38 34.174932",
"utmScaleFactor":0.9996897,
"utmCombinedFactor":0.99967402,
"x":849623.061,
"y":-4818451.818,
"z":4078049.851,
"usng":"17TNE8536028236"
}

我遇到的问题是访问存储的 $result 对象的返回字段。如果我输入 $result.它将返回所有 100 个观察结果的所有文本。如果我输入 $result[1] 我只能得到第一个观察的 ID。如果我输入 $result.ID,我不会返回任何内容。

这就是我想要达到的目标:

$add = foreach ($r in $result)
{
"INSERT INTO SPCtoLatLong VALUES ('" + $r.spcZone + "','" + 
$r.spcNorthing_usft + "','" + $r.spcEasting_usft + "','" + $r.srcLat + "','" 
+ $r.srcLon + "','" + $r.srcDatum + "','" + $r.destDatum + "')" + $nl
}

我只有 2 周的 PowerShell 经验,我做错了什么?感谢您的帮助。

最佳答案

来自外部应用程序的标准输出以字符串数组的形式返回(一行 = 一个枚举)。您需要将返回数据解析为对象,或者,如果您使用的是 PowerShell 5+,则可以利用 ConvertFrom-String 为这些对象创建模板并将其输出传递给被转换。

但是!根据您的数据的格式,我将执行以下操作:

$Expected = $Result | ConvertFrom-Json

PS C:\> $Expected.GetType()
PSCustomObject

关于java - 访问 PowerShell 对象中的文本。为什么它似乎不存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242480/

相关文章:

powershell - 使用批处理脚本中的参数运行PowerShell脚本

powershell - 从 PowerShell 打开并在 cmd 上运行命令

java - 如何使用 POI 在 Word 中读取标题编号

java - 在分布式环境中运行 CQEngine

java - 如何使用 jackson 将具有 json 值的 Map<String, String> 转换为 POJO?

api - 通过 Paypal API,我可以使用什么调用从我的 PayPal 余额转账到我的银行账户

facebook - 使用 Graph API 从 Facebook 事件中获取照片和视频

java - 在 nodejs 中获取 socket.io 选项的查询

python - Google Analytics(分析)Python API调用导致UnboundLocalError

.net - Select-String如何读取文本文件内容?大块?