2017-08-01 7 views
1

まずは事前におねがいします。 PowerShellを使用して以下のJSON文字列から以下の値を取得しようとしていますが、問題があります。JSONの値をPowerShellで取得

ScheduleTitle, 
Title, 
Environment and Title 
Resolution, 
Width, 
Height 

JSON:

{"Id":"d52fb00e-8736-448c-a496-96db6bc2eb43","ScheduleId":"275726dc-09f2-4869-b1a0-54c71ef6a093","ScheduleTitle":"Resolution Testing","RunType":"RunNow","Timestamp":"2017-08-01T04:52:19.2039685","AutomationRunItems":[{"Id":"f7b731fb-cd96-4003-b95c-ef1594f1c86e","AutomationRunId":"d52fb00e-8736-448c-a496-96db6bc2eb43","Status":"Done","Case":{"Id":"c8a0b939-54ba-4b98-8ca9-101093aec26f","Title":"Resolution Test"},"Environment":{"Id":"e1783fb5-4001-45d0-9971-b49c31b374ab","Title":"Se Chrome"},"Keyframes":[{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00","Level":"Info","Status":"Connecting","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Connecting to Se Chrome: Selenium Grid (localhost:5559) on Chrome with size 1280x1024"},{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00.0000003","Level":"Info","Status":"Connected","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Connected"},{"Timestamp":"2017-08-01T04:52:03.0685609","Elapsed":"00:00:00.0000015","Level":"Info","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Running"},{"Timestamp":"2017-08-01T04:52:03.0695642","Elapsed":"00:00:00.0003729","Level":"Trace","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:03.5713896","Elapsed":"00:00:00.5020154","Level":"Trace","Status":"Running","BlockId":"78c198ac-b61f-40eb-b1d9-e706546f2be3","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:03.5713896","Elapsed":"00:00:00.5021370","Level":"Trace","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:06.9793063","Elapsed":"00:00:03.9107459","Level":"Info","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Chrome was successfully started"},{"Timestamp":"2017-08-01T04:52:09.4641639","Elapsed":"00:00:06.3955903","Level":"Info","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Chrome loaded url https://dev.bamapplication.com/app/starke/npr/3BF6DA09C1/wizard"},{"Timestamp":"2017-08-01T04:52:09.7604882","Elapsed":"00:00:06.6925088","Level":"Trace","Status":"Running","BlockId":"302f21b8-a279-48ce-9338-580a97c930fd","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:09.7604882","Elapsed":"00:00:06.6926471","Level":"Trace","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:10.4639126","Elapsed":"00:00:07.3954580","Level":"Warning","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Web screenshot is saved"},{"Timestamp":"2017-08-01T04:52:10.7666916","Elapsed":"00:00:07.6982198","Level":"Trace","Status":"Running","BlockId":"26382d5d-60a6-4343-b934-265c4e97186d","LogMessage":"Block is executed."},{"Timestamp":"2017-08-01T04:52:10.7666916","Elapsed":"00:00:07.6983727","Level":"Trace","Status":"Running","BlockId":"161e621f-bb7a-4f42-a5f1-67e07d1432f4","LogMessage":"Block is executing."},{"Timestamp":"2017-08-01T04:52:11.7677637","Elapsed":"00:00:08.6992111","Level":"Info","Status":"Done","BlockId":"161e621f-bb7a-4f42-a5f1-67e07d1432f4","LogMessage":"Case is stopped."}],"Resolution":{"Width":1280,"Height":1024},"Elapsed":"00:00:08.6992111","CreatedAt":"2017-08-01T04:52:19.2039685","ModifiedAt":"2017-08-01T04:52:19.2039685"}],"ProjectId":"275726dc-09f2-4869-b1a0-54c71ef6a093","ExecutionTotalTime":"00:00:08.6992111","FailedCount":0,"PassedCount":0,"DoneCount":1,"CreatedAt":"2017-08-01T04:52:03.0685609"} 

コード:あなたはあなたが必要なすべての情報を抽出することができ、あなたの$parsedデータで

Param([string]$result, [string]$rootPath) 
try{ 
    $json = $result 
    $parsed = $json | ConvertFrom-Json 
    $output= '' 
    foreach ($line in $parsed | Get-Member) { 
     Write-Output $parsed.$($line.Resolution).property1 
     Write-Output $parsed.$($line.Resolution).property2 
     $output += $parsed.$($line.Resolution).property1 + " " + $parsed.$($line.Resolution).property1 
    } 
} 
+0

https://stackoverflow.com/help/how-を検討することを確認してください。あなたが質問をする前に質問してください。どのように値を取得しようとしていますが指定されていません。 – darthsidious

+0

質問に入れてください。 – darthsidious

+0

必要なプロパティをよりよく定義する必要があります。複数の 'Title'プロパティがあります。具体的には、' AutomationRunItems.Case.Title'、 'AutomationRunItems.Environment.Title'、' AutomationRunItems.Resolution.Width'などです。 – TheMadTechnician

答えて

1

。幅を抽出する。例えば

echo $parsed.AutomationRunItems.Resolution.Width 

は印刷する必要があります:1280

を私はこれらはあなたが抽出された必要なすべてのフィールドだと思います。あなたが出力正確に、私は単純に使用しているカンマ区切りの文字列を指定しなかったので、注意してください:

$output= '' 
$output = $output + $parsed.ScheduleTitle + ',' 
$output = $output + $parsed.AutomationRunItems.Case.Title + ',' 
$output = $output + $parsed.AutomationRunItems.Environment.Title + ',' 
$output = $output + $parsed.AutomationRunItems.Resolution.Width + ',' 
$output = $output + $parsed.AutomationRunItems.Resolution.Height 

は印刷する必要があります:Resolution Testing,Resolution Test,Se Chrome,1280,1024

+0

彼はすでにJSONを'$ parsed'ので、ファイルに保存する必要はありません。彼は '$ parsed.AutomationRunItems.Resolution.Width'と言ったような適切なプロパティを参照するだけです。 – TheMadTechnician

+0

ありがとう!それがそれでした。 –