2016-04-11 12 views
1

Invoke-WebRequestを使用してHtmlWebResponseObjectオブジェクトを取得しています。 descriptionフィールドが特定の文字列(この場合は "server1")に一致すると、IDフィールドの値を取得します。 Invoke-WebRequestによって返される結果は何百もあります(文字列は超長です)。以下のサンプルを見ると、IDはどのように抽出されますか?文字列を解析するためのヘルプのリクエスト

{ "ステータス":200、 "データ":[ { "nextRecipient":0、 "clearSent":真、 "lastSentNotificationOn":0、 "netscanVersion":「0 " "suppressAlertClear": "偽"、 "構築": "19000"、 "lastSentNotificationOnLocal": ""、 "ID":6、 "resendIval":15、 "watchdogUpdatedOn":" 2016- 04-11 10:28:02 MDT "、 " escalatingChainId ":6、 " descriptio "" ackComment ":" "credential2": ""、 "updatedOn":1460392096、 "updatedOnLocal": "2016-04-11 10:28:16 MDT" 、 "agentConf": "product.code = {guid} \ r \ n#インストーラのバージョンは変更しないでください\ r \ ninstaller.version = 0001 \ r \ n \ r \ n#エージェント設定ウィザードで生成\ r \ nサーバー= url \ r \ ncompany =会社\ r \ nid = 6 \ r \ nクレデンシャル==クレジット\ r \ n \ r \ n#ロガー設定。 logger.sizeを0に設定してロガーサイズを制限しないと、そのサイズはその\ r \ nlogger.output = console \ rlogin.logfile = \ r \ nlogger.size = 64 \ r \ nloggerで指定されたメガバイトに制限されます。レベル=情報\ r \ n \ r \ n#ウォッチドッグログレベル\ r \ nlogger.watchdog = info \ r \ n#各コンポーネントごとに、ここで詳細な制御を追加する\ r \ n# \ r \ n#logger.level.controller = debug \ r \ n#\ r \ n#設定されていない場合、デフォルトのログレベル、つまりlogger.levelの値が使​​用されます。\ r \ n#\ r \ n \ rエージェントがウォッチドッグを監視する場合、デフォルトはfalseです。\ r \ nエージェントモニターデバッグ= true \ r \ n \ r \ n#ウォッチドッグがエージェントをアップグレードするかどうか、デフォルトはtrueに設定されていますか?r \ nagent.autoupgrade = true \ r \ n \ r \ n#サービス接続タイムアウト。接続には5秒、サーバーからのフィードの送受信には30秒が必要です。\ r \ nサービス。接続時間= 5 \ r \ nサービス。読み取り時間= 30 \ r \ n \ r \ n#SSL &プロキシ設定\ r \ nssl。有効= true \ r \ nproxy.enable = false \ r \ nproxy.host = \ r \ nproxy.port = \ r \ nproxy.user = \ r \ nproxy.pass = \ r \ nproxy.exclude = \ r \ n \ r \ n#sbproxy.address = 127.0.0.1 \ r \ nsbproxy.port = 72 \ r \ nsbproxy.logsize = 64 \ r \ nsbproxy.restartOn102 = false \ r \ nsbproxy.pdhNoAuthentication = false \ r \ n \ r \ n#sbproxy接続プールの設定\ r \ nsbproxy.pool.connections = 50 \

ありがとうございました。

答えて

5

オブジェクトにJSON文字列からの応答に変換し、関連するプロパティを展開します。あなたが投稿コードを使用

$response | ConvertFrom-Json | 
    Select-Object -Expand data | 
    Where-Object { $_.description -match 'server1' } | 
    Select-Object -Expand id 
+0

を、私はIDのすべてを見ることができますが、私は唯一の「SERVER1」のIDを望みます。 '$応答|コンバット・フロン・ジョソン| Select-Object -ExpandPropertyデータ| Select-Object -ExpandProperty id |ここで、{$ _ -eq '6'} 'は私にただ1つのエントリを返しますが、私は1つのプロパティを取得しています。私は '$ response |コンバット・フロン・ジョソン| Select-Object -ExpandPropertyデータ| Select-Object -ExpandProperty id |どこで{$ response |コンバット・フロン・ジョソン| Select-Object -ExpandPropertyデータ| Select-Object -ExpandPropertyの説明|どこに{$ _ -eq "server1"}} 'がありますが、それは私にすべてのIDを返しました。申し訳ありません4形式 – StackExchangeGuy

+1

IDを展開する前に、説明のフィルタを適用してください。更新された回答をご覧ください。 –

+0

Brilliant!私はそのフィルターをどこに貼り付けるべきか分かりませんでした。 :) – StackExchangeGuy