如何从PowerShell输出中删除花括号

时间:2017-06-16 15:42:04

标签: powershell amazon-web-services aws-powershell aws-certificate-manager

这与AWS证书管理员有关:

Get-ACMCertificatelist | Get-ACMCertificateDetail | Select -ExpandProperty renewalsummary | Where-object {$_.renewalStatus -ne "Success"} 

以下是输出,我想删除那些大括号:

DomainValidationOptions                   RenewalStatus       
-----------------------                   -------------       
{Certificate1}                         PENDING_AUTO_RENEWAL
{certificate2}                         PENDING_AUTO_RENEWAL

3 个答案:

答案 0 :(得分:2)

有问题的对象实际上是为DomainValidationOptions部分提供了一个数组,该数组可以包含多个值。

| Select @{n="DomainValidationOptions";e={($_.DomainValidationOptions -join ",")}},RenewalStatus

将它放在查询的末尾将用逗号分隔的字符串而不是数组替换DomainValidationOptions,但保留名称,如果只有一个选项,这在技术上只是将其转换为字符串

答案 1 :(得分:1)

将集合转换为格式化cmdlet中的字符串时会自动添加这些内容。您可以自己格式化对象以消除它们。

答案 2 :(得分:1)

您可以为要深入查看的DomainValidationOptions的每个属性指定calculated properties

步骤1)发现属性

将DomainValidationOptions移至Get-Member -MemberType Property,以查看您将要使用的属性:

Get-ACMCertificateList |
Get-ACMCertificateDetail |
Select -ExpandProperty RenewalSummary |
Select -ExpandProperty DomainValidationOptions |
Get-Member -MemberType Property


   TypeName: Amazon.CertificateManager.Model.DomainValidation

Name             MemberType Definition
----             ---------- ----------
DomainName       Property   string DomainName {get;set;}
ValidationDomain Property   string ValidationDomain {get;set;}
ValidationEmails Property   System.Collections.Generic.List[string] ValidationEmails {get;set;}
ValidationStatus Property   Amazon.CertificateManager.DomainStatus ValidationStatus {get;set;}

步骤2)提出请求

为了举例,假设我们只想检索DomainName和ValidationDomain。我们将为每个属性添加两个计算属性,然后只需在RenewalSummary对象上定期选择RenewalStatus:

Get-ACMCertificateList | 
Get-ACMCertificateDetail | 
Select -ExpandProperty RenewalSummary | 
Where-object {$_.RenewalStatus -ne "Success"} |
Select @{N='DomainName';E={$_.DomainValidationOptions.DomainName}}, `
       @{N='ValidationDomain';E={$_.DomainValidationOptions.ValidationDomain}}, `
       RenewalStatus

示例输出:

DomainName                 ValidationDomain           RenewalStatus
----------                 ----------------           -------------
*.subdomain.mydomain.com   mydomain.com               PENDING_AUTO_RENEWAL
mything.mydomain.com       mydomain.com               PENDING_AUTO_RENEWAL

您可以对ValidationEmails执行类似的操作,我没有在此示例中包含它,因为这会产生太多属性,无法在Stack Overflow上干净地格式化。如果要展开集合并将其转换为字符串,其计算属性将如下所示:

@{N='ValidationEmails';E={$_.DomainValidationOptions.ValidationEmails -join ','}}

进一步阅读