2016-10-07 4 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) 

しかし、これは動作していないようです:PowerShellの経由今

<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

関連する問題