我有一个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”字段作为日期或字符串进行比较。 任何指针都会有很大的帮助。
答案 0 :(得分:0)
如果没有完整的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 }