通过Powershell筛选selectnodes



我有一个XML文件,其中包含元素和其他属性的过期。我必须解析文件,并通过Powershell脚本找出所有将在未来50天内到期的元素。

XMl文件中的条目:

<Certificate>
        <Version>3</Version>
        <SignatureAlgorithm>sha1RSA</SignatureAlgorithm>
        <Subject />
        <NotAfter>2017-07-12T09:19:44Z</NotAfter>
        <NotBefore>2016-07-12T09:19:44Z</NotBefore>
        <IsVerified>true</IsVerified>
</Certificate>

现在通过Powershell,我试着做这样的事情:

$ExpiryDate=(GET-DATE).AddDays(50)
$xdoc = [xml] (get-content $InputFile)
$xdoc.SelectNodes("//Certificate/NotAfter[. > $ExpiryDate]")
#$xdoc.Save($ResultsFile)

但这似乎不起作用。我甚至不确定我是否需要比较"NotAfter"字段作为日期或字符串。

如果没有完整的xml输入示例,就很难给出正确的答案。但是,您可以在下面的示例中了解如何继续:

$xml = [xml] @"
    <?xml version="1.0" encoding="UTF-8" ?>
    <CertificateList>
        <Certificate>
                <Version>3</Version>
                <SignatureAlgorithm>sha1RSA</SignatureAlgorithm>
                <Subject />
                <NotAfter>2017-07-12T09:19:44Z</NotAfter>
                <NotBefore>2016-07-12T09:19:44Z</NotBefore>
                <IsVerified>true</IsVerified>
        </Certificate>
        <Certificate>
                <Version>3</Version>
                <SignatureAlgorithm>sha1RSA</SignatureAlgorithm>
                <Subject />
                <NotAfter>2014-05-12T09:19:44Z</NotAfter>
                <NotBefore>2016-03-12T09:19:44Z</NotBefore>
                <IsVerified>true</IsVerified>
        </Certificate>
    </CertificateList>
"@
$ExpiryDate=(Get-Date).AddDays(50)
$xml.CertificateList.Certificate | ?{ [DateTime] $_.NotAfter -gt $ExpiryDate }

相关内容

  • 没有找到相关文章

最新更新