2

PowerShell で ReST リクエストを実装しようとしています。以下は、PowerShell での $response です。

@type            : bundleObject
id               : ZZZZZZ160000000000RU
orgId            : 000007
name             : xxxxxxxxxx
description      : Bundle being used for QA.
createTime       : 2015-04-24T15:13:24.000Z
updateTime       : 2015-04-24T15:13:24.000Z
createdBy        : xxx@gmail.com
updatedBy        : yyy@gmail.com
lastVersion      : 1.0
paid             : False
accessType       : PUBLIC
objects          : {@{@type=bundleRefObject; objectTypeCode=17; 
                   objectId=ZZZZZZ17000000000003; 
                   objectName=Mapping_01; objectDescription=; 
                   objectUpdateTime=2015-04-24T15:05:41.000Z}, 
                   @{@type=bundleRefObject; objectTypeCode=17; 
                   objectId=ZZZZZZ17000000000004; 
                   objectName=Mapping_02; objectDescription=; 
                   objectUpdateTime=2015-04-24T15:09:28.000Z}, 
                   @{@type=bundleRefObject; objectTypeCode=17; 
                   objectId=ZZZZZZ17000000000005; 
                   objectName=Mapping_03; objectDescription=; 
                   objectUpdateTime=2015-04-24T15:11:59.000Z}}
externalId       : CYIhYNVCSdC6J17N-LyA6A

オブジェクト セクションには、3 つのオブジェクト ID があります。後で使用するために、これらの ID と名前をリストにコピーする必要があります。を使用してオブジェクト部分を正常にフェッチしました

$responseobject = $response.objects

ただし、オブジェクト名とオブジェクト ID を取得してリストに保存する方法がわかりません。ここで PSCustomObject を使用する必要がありますか?

- - - - - - - - - - - - - 更新しました

ここでもう 1 つクエリを実行します。値をハッシュマップに追加しました

$response_connection_hashmap = $response_connection|foreach {
    @{  $_.name = $_.id }
    }

ただし、キーで値をフェッチしている間

$response_connection_hashmap.Item('Key_1')

次のようにエラーが発生しています

Exception getting "Item": "Cannot convert argument "index", with value:  "Key_1", for "get_Item" to type "System.Int32": "Cannot convert value "Key_1" to type "System.Int32". Error: "Input string was not in a correctformat.

他に何か不足していますか?

4

1 に答える 1

1

答えは、値をどのように使用するかによって異なります。

必要なものがIDの配列だけである場合は、使用できます

($response.objects).objectIds

または、より長い形式 (古いバージョンの PS に必要)

$response.objects | Select-Object -ExpandProperty objectIds

値を 1 つずつ操作するために値を引き出す必要がある場合は、 を使用foreachしてオブジェクトを反復処理できます。

$response.objects | foreach {
  Do-SomethingWith -id $_.objectID -updateTime $_.objectUpdateTime
}

(さらなる処理のために) すべてのオブジェクトの ID と UpdateTime を含む変数が必要な場合は、ハッシュマップの配列を作成できます。

$responseObjectList = $response.objects | foreach {
  @{ id = $_.objectID; updateTime = $_.objectUpdateTime }
}

またはPSCustomObject、きれいに印刷したい場合。

$responseObjectList = $response.objects | foreach {
  [PSCustomObject]@{ id = $_.objectID; updateTime = $_.objectUpdateTime }
}
于 2016-03-04T07:06:53.460 に答える