Я работаю над сценарием PowerShell.
Сценарий:
XML-файлы, сохраненные в c: \ Temp \
Я хотел бы найти строку в этих XML-файлах, и каждый XML-файл имеет эту строку <AccountNum>CU000043<AccountNum>
Пример XML-файла:
-<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
-<Header>
<MessageId>{240ECE0A-19DC-4C0B-9B32-DED89888A1A5}</MessageId>
<Action>http://tempuri.org/shipment/read</Action>
</Header>
-<Body>
-<MessageParts xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
-<shipment xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/WHSShipmentASN">
<DocPurpose>Original</DocPurpose>
<SenderId>abc</SenderId>
<ValidAsOfDateTime>2018-06-22T20:08:25Z</ValidAsOfDateTime>
<ValidTimeStateType>AsOf</ValidTimeStateType>
-<shipmentTable class="entity">
<_DocumentHash>73ad5ddc457625bc0673e9d598c848cc</_DocumentHash>
<AccountNum>CU00131</AccountNum>
Значение «AccountNum» будет время от времени меняться. Я хочу, чтобы любой файл со значением CU00145 или CU00142 или CU00144 или CU00143 или CU00070 должен быть перемещены в папку «c: \ temp \ specific». Другие XML-файлы, значения которых отличаются от указанных выше, должны быть перемещены в «c: \ temp \ others».
Пример моего кода:
$FileDirectory = "C:\Temp\lane\test";
$OutputPath = "C:\Temp\lane\Specific";
$OutputPath2 = "C:\Temp\lane\Others";
Get-ChildItem $FileDirectory | ? { !$_.PSIsContainer } | ForEach-Object {
$FilePath = $_.FullName
$Header = Get-Content $FilePath
if ($Header | Select-String -Pattern 'CU00145, CU00142, CU00144, CU00143, CU00070') {
Move-Item $FilePath $OutputPath
}
else {
Move-Item $FilePath $OutputPath2
}
}
Я работал над простым сценарием PowerShell, но этот довольно смущает меня. Любая помощь будет высоко ценится. Я извиняюсь, если информации недостаточно. Дайте мне знать, если вам нужна дополнительная информация.