J'ai pris des coordonnées de plan d'état à partir d'une table SQL Server et rempli un objet avec 100 chaînes concaténées qui serviront de mon entrée dans une application Java.Accès au texte dans un objet PowerShell. Pourquoi ne semble-t-il pas être stocké dans un tableau?
$key = Invoke-Sqlcmd -Query "SELECT DISTINCT CONCAT('spc,'<spcZone>,',',
<northing>,',',<easting>, ',',<units>,',',<inDatum>,',',<outDatum>) as
conversionString FROM <source table>;" -ServerInstance "<server>" -Database
"<database>"
Le résultat sera 100 cordes qui ressemblent à ceci dans un tableau:
spc,2402,173099.419,503626.812,m,NAD83(2011),NAD83(2011)
J'utilise ensuite l'application java gtk de la NOAA et traversent les 100 observations à convertir:
$result = FOREACH ($k in $key.conversionString)
{
java -Dparms="$k" -jar H:\gtk\jtransform_thin.jar
}
La sortie renvoyée pour une observation ressemble à ceci:
{
"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"
}
Le problème que je rencontre est l'accès aux champs retournés de l'objet $ result. Si je tape $ resultat. Il renverra tout le texte de toutes les 100 observations. Si je tape $ result [1], je n'ai que l'ID de la première observation. Si je tape $ result.ID, je n'ai rien retourné.
C'est là que je suis en train de se rendre à:
$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
}
Je n'ai que 2 semaines d'expérience dans PowerShell, ce que je fais mal? Merci pour toute aide.
Hey Travis. Je ne peux pas dire quel est le résultat de $ type. Dites-nous quel est le résultat $ | Get-Membre crache. –
@JohnDonnelly C'est un tableau de chaînes. C'est ce qui arrive lorsque vous capturez la sortie d'un programme externe. – TheIncorrigible1