2016-10-07 2 views
1

J'ai un fichier XML qui contient l'expiration des éléments avec d'autres attributs. Je dois analyser le fichier et comprendre tous les éléments qui doivent expirer dans les 50 prochains jours grâce à un script Powershell.Filtrage à partir de selectnodes via Powershell

entrées dans le fichier 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> 

Maintenant, grâce à Powershell, je suis en train de faire quelque chose comme ceci:

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

Mais cela ne semble pas fonctionner. Je ne suis même pas sûr si j'ai besoin de comparer le champ "NotAfter" comme date ou chaîne. Tous les pointeurs seraient d'une grande aide.

Répondre

0

Sans un exemple complet de votre entrée XML, il est assez difficile de vous donner une réponse correcte. Cependant, vous pouvez avoir une idée de la façon de procéder dans l'exemple ci-dessous:

$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

Merci beaucoup. Ça a marché :) – user2549046