2

这是关于 AWS 证书管理器的:

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

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

DomainValidationOptions 续订状态       
------------ -------------       
{Certificate1} PENDING_AUTO_RENEWAL
{certificate2} PENDING_AUTO_RENEWAL
4

3 回答 3

2

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

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

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

于 2017-06-16T16:41:10.487 回答
1

这些是在格式化 cmdlet 中将集合转换为字符串时自动添加的。您可以自己格式化对象以摆脱它们。

于 2017-06-16T15:44:25.050 回答
1

您可以为要深入研究的 DomainValidationOptions 的每个属性指定计算属性。

步骤 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 ','}}

延伸阅读

于 2017-06-28T01:40:48.010 回答