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 吗?

- - - - - - - - - - - - - 更新

这里还有一个查询。我将值添加到哈希图中

$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

如果您需要提取值以对它们一一进行操作,您可以使用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 回答