如何使用 PowerShell 从 XML 文件中获取退出代码?
How to get exitcode from XML file using PowerShell?
我有一个 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%"
类似这样;读取 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 的评论。
我有一个 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%"
类似这样;读取 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 的评论。