使用powershell在csv中显示多个输出

时间:2015-06-23 08:14:08

标签: powershell amazon-web-services

$s3list = Get-S3Bucket  | Select-Object BucketName, CreationDate

foreach ($item in $s3list) {
    $s3bucket = $item.bucketname
    Get-S3BucketTagging -BucketName $s3bucket
}

以上代码不正确。

Get-S3Bucket创建了两个对象,分别是BucketNameCreationDate

Get-S3BucketTagging还会创建两个对象KeyValue

如何将其写入以显示在CSV文件中,以便输出如下所示: enter image description here

*每个BucketName与多个键和值相关联。

1 个答案:

答案 0 :(得分:2)

您需要格式化数据,以便输出中的一个对象成为CSV中的一行。由于您有一个S3Bucket对象和几个对应的S3BucketTagging个对象,因此您可以针对后者运行foreach循环,并创建一个包含来自两者的数据的自定义对象。

$s3list = Get-S3Bucket  | Select-Object BucketName, CreationDate

foreach ($item in $s3list) {
    $s3bucket = $item.bucketname
    $s3tags=Get-S3BucketTagging -BucketName $s3bucket
    foreach ($tag in $s3tags) {
        new-object PSObject -property @{
            "BucketName"=$item.bucketname;
            "CreationDate"=$item.creationdate;
            "Key"=$tag.key;
            "Value"=$tag.value
        } # this puts the newly created object to output
    }
}

您可以使用此脚本的输出blick来管道Export-CSV所需的参数。但请注意,最左边的两列不会被“分组”,因此后续行会出现空白,您必须对CSV进行后期处理。