Не могли бы вы помочь мне отладить мой код.
Я использую скрипт Powershell для анализа большого количества файлов XML из одной папки и создания отчета о мониторинге, чтобы выяснить, кто изменяет XML икогда. Итак, проблема в том, когда я пытаюсь сравнить дату изменения файла XML и сегодняшнюю дату ($filterDate
).
Изначально у меня есть папка, полная файлов XML, и мне нужно получитьвнутри этих файлов дата изменения, пользователь и имя файла. Я добавил пример кода XML.
Прямо сейчас, часть с Where-Object {$_.TimeModified.Date -GE $filterDate}
не работает с -GE
, но если я попытаюсь поставить -LE
, она покажет мне вывод из всех файлов.
Пример XML
<ModullarRule schema="3.2" id="2132135e" entrypoint="12321321321313ce2" design="118;51">
<Name>AnyShit2Queue</Name>
<Description/>
<Comments/>
<RuleAudit stamp="2132131237" version="0.SS@TEST.3">
<SrvModified date="2018.11.29 09:35:11" user="User1"/>
<XmlModified date="2017.12.05 17:13:49" user="User2"/>
<SrvCreated date="2017.12.05 10:07:36" user="User2"/>
<XmlCreated date="2017.12.05 10:07:36" user="User2"/>
</RuleAudit>
</ModullarRule>
Я пытаюсь извлечь часть <SrvModified>
из XML.
$Path = "C:\Test"
$filterDate = Get-Date -format "yyyy.MM.dd hh:mm:ss"
Get-ChildItem -Path $Path -Filter '*.xml' -File -Recurse | ForEach-Object {
[xml]$xml = Get-Content -Path $_.FullName | Where-Object {
$_.TimeModified.Date -LE $filterDate
}
foreach ($item in $xml.ModullarRule.RuleAudit.SrvModified) {
$Xml.ModullarRule.RuleAudit.SrvModified | Select date, user
}
}
Спасибо!