2016-10-07 8 views
1

다른 속성과 함께 요소가 만료 된 XML 파일이 있습니다. 파일을 파싱하고 Powershell 스크립트를 통해 향후 50 일 동안 만료되는 모든 요소를 ​​파악해야합니다. XML 파일에선택 노드에서 Powershell을 통한 필터링

항목 :

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

을하지만이 작동하지 않는 것 :

<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> 

지금 파워 쉘을 통해, 나는 이런 식으로 뭔가를 시도하고있다. "NotAfter"필드를 날짜 또는 문자열로 비교해야하는지 확실하지 않습니다. 모든 포인터가 큰 도움이 될 것입니다.

답변

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 } 
+0

고맙습니다. 그것은 일했다 :) – user2549046