当输入是 system.array 时,访问选择字符串输出的成员时出现问题



我正在调用 restAPI,其中一些返回多个结果,我正在尝试使用 Select-String 在数组中获取正确的行,但它返回一个 matchinfo 对象,其值以 @{... 我无法将此值放入哈希表或对象中,因此我可以从字符串中提取成员。

我尝试将 MatchInfo 对象转换为带有输出字符串的字符串,然后将该结果放入哈希表中。 收到以下错误:

Cannot convert the "
@{id=352475; href=/api/v1/exports/458234/export_files/352475; export_id=458234; status=Available}
" value of type "System.String" to type "System.Collections.Hashtable".

具有包含以下内容的 PSCustomObject:

PS C:> $_expFilesRet
href                                                        export_files
----                                                        ------------
/api/v1/user_identities/289362/export_files                 {@{id=352475; 
href=/api/v1/exports/458234/export_files/3...

上述导出文件方法是

PS C:> $_ExpFilesRet.export_files.getType();
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

具有以下值:

PS C:> $_expFilesRet.export_files
                           id href                                              export_id status
                           -- ----                                              --------- ------
                       352475 /api/v1/exports/458234/exp...                        458234 Available
                       278697 /api/v1/exports/357459/exp...                        357459 Available

已尝试以下操作

PS C:> $_temp=$_ExpFilesRet.export_files | select-string -pattern $_postret.export_files.export_id
PS C:> $_temp
@{id=352475; href=/api/v1/exports/458234/export_files/352475; export_id=458234; status=Available}
PS C:> $_temp=$_ExpFilesRet.export_files | select-string -pattern $_postret.export_files.export_id | out-str
ing -width 1000
PS C:> $_temp
@{id=352475; href=/api/v1/exports/458234/export_files/352475; export_id=458234; status=Available}

PS C:> [hashtable]$_temp=$_temp
Cannot convert the "
@{id=352475; href=/api/v1/exports/458234/export_files/352475; export_id=458234; status=Available}
" value of type "System.String" to type "System.Collections.Hashtable".
At line:1 char:1
+ [hashtable]$_temp=$_temp
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

我正在尝试从 $_temp 中的结果字符串中获取 ID (352475( 的值。

使用Where-Object而不是Select-String来过滤对象:

$_temp = $_ExpFilesRet.export_files |Where-Object export_id -eq $_postret.export_files.export_id |Select -Expand id

相关内容

  • 没有找到相关文章

最新更新