Как получить код выхода из файла XML с помощью PowerShell? - PullRequest
0 голосов
/ 14 марта 2019

У меня XML-файл выглядит так:

<Feature>
    <B7>A</B7>
    <B8>B</B8>
    <B9>C</B9>
    <ExitCode>
        <Found>123</Found>
        <NotFound>789</NotFound>
    </ExitCode>
</Feature>

У меня скрипт PowerShell выглядит следующим образом:

$regex = [regex]$Pattern
$matching = $regex.Match($FB)
if ($matching.Success) {
    while ($matching.Success) {
        "Match found: {0}" -f $matching.Value
        exit 123 #I want to delete this
        $matching = $matching.NextMatch()
    }
} else {
    "Not Found" 
    exit 789 #I want to delete this
}

Я хочу получить код выхода, но я не хочу писать exit 123 и exit 780, я просто хочу вызвать код выхода из файла XML, поэтому каждый раз, когда я хочу изменить номер кода выхода, я просто изменить из файла XML, а не из сценария PowerShell.

Итак, я могу получить журнал кода выхода, если я запускаю сценарий с использованием командного файла, выглядит так:

set log=C:\Users\Log.txt
set PS=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
set PS=%PS%\powershell.exe -ExecutionPolicy Bypass -File 

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -File C:\Users\XML.ps1 -i C:\Users\Feature.txt -j C:\Users\XML.xml

echo %ERRORLEVEL% > "%log%"

1 Ответ

1 голос
/ 14 марта 2019

как то так;прочитайте файл XML, затем получите числа из него по ссылкам на свойства:

$xmlData = New-Object -TypeName System.Xml.XmlDocument
$xmlData.Load('c:\test\data.xml')

$regex = [regex]$Pattern
$matching = $regex.Match($FB)
if ($matching.Success) {
    while ($matching.Success) {
        "Match found: {0}" -f $matching.Value
        exit $xmlData.Feature.ExitCode.Found
        $matching = $matching.NextMatch()
    }
} else {
    "Not Found" 
    exit $xmlData.Feature.ExitCode.NotFound
}

Редактировать: обновить для лучшей обработки XML, которая может корректно обрабатывать кодировки файлов XML.Благодаря комментариям @ tomalak.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...