无法导出系统.对象的可读形式

  • 本文关键字:对象 系统 powershell csv export
  • 更新时间 :
  • 英文 :


我已经看了其他的答案,我仍然在挣扎。我有一些来自RESTAPI的数据我使用Invoke-RestMethod获取这些数据它已经从返回的JSON

转换过来了$scans = Invoke-RestMethod -URI "https://<url>/api/v1/<api key>/scans"

我得到了一个有两个字段的对象

Message:
Data:

$Scans.Data包含一个从JSON输出转换的哈希表,表中的每个条目具有以下键:值对

ScanID
Username
Targets
Name

$scans | Get-Member

的输出
$scans | gm
TypeName: System.Management.Automation.PSCustomObject
Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
name        NoteProperty string name=<redacted>
scan_id     NoteProperty string scan_id=<redacted>
targets     NoteProperty Object[] targets=System.Object[]
user_name   NoteProperty string user_name=<redacted>

我需要将所有数据导出为CSV,但$scan.data.targets只显示为System.Object[]

我不能使用-expandproperty,因为我正在选择多个字段。

如何将$scans.data.targets转换为可读的导出形式,同时保持它与该条目的其他字段的链接?

相当于:

$scans.data | export-CSV <filepath>

,但导出的格式,当我打开CSV

可读

如前所述,您可以在输出中选择目标的组合字段:

# demo
$scan = [PsCustomObject]@{data = [PsCustomObject]@{name = 'blah'; scan_id = 123; targets = 'abc','def','ghi'; user_name = 'ItIsMe'}}
$scan.data | Select-Object *, @{Name = 'targets'; Expression = {$_.targets -join '; '}} -ExcludeProperty targets | 
Export-Csv -Path 'D:Testblah.csv' -NoTypeInformation

(在控制台中显示时)看起来像这样:

name scan_id user_name targets      
---- ------- --------- -------      
blah     123 ItIsMe    abc; def; ghi

或者创建输出,每个目标在CSV中都有自己的行:

$result = foreach ($item in $scan.data) {
foreach ($target in $item.targets) {
[PsCustomObject]@{
Name     = $item.name
ScanID   = $item.scan_id
Target   = $target
UserName = $item.user_name
}
}
}
# output on screen
$result
# output to CSV file
$result | Export-Csv -Path 'D:Testblah.csv' -NoTypeInformation

给出如下:

Name ScanID Target UserName
---- ------ ------ --------
blah    123 abc    ItIsMe  
blah    123 def    ItIsMe  
blah    123 ghi    ItIsMe  

相关内容

  • 没有找到相关文章

最新更新