1

要素の有効期限と他の属性を含む 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」フィールドを日付または文字列として比較する必要があるかどうかさえわかりません。どんなポインタでも大いに役立ちます。

4

1 に答える 1

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 }
于 2016-10-07T07:51:24.400 に答える