【发布时间】:2018-04-06 13:39:59
【问题描述】:
我正在尝试从脚本中删除变量的定义,并从类似于下面的 XML 配置文件中读取它们:
XML 文件
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<process>FALSE</process>
<xmlDir>\\serv1\dev</xmlDir>
<scanDir>\\serv1\dev</scanDir>
<processedDir>\\serv1\dev\done</processedDir>
<errorDir>\\serv1\dev\err</errorDir>
<log>\\serv1\dev\log\dev-Log##DATE##.log</log>
<retryDelay>5</retryDelay>
<retryLimit>3</retryLimit>
</settings>
然后用下面的代码解析脚本中的 XML:
[xml]$configFile = Get-Content $PSScriptRoot\$confFile
$settings = $configFile.settings.ChildNodes
foreach ($setting in $settings) {
New-Variable -Name $setting.LocalName -Value ($setting.InnerText -replace '##DATE##',(get-date -f yyyy-MM-dd)) -Force
}
这很好用,但问题是它们都被读取为字符串,但我需要一些整数。为了解决这个问题,我必须在创建变量后将它们更改为整数,如下所示:
$retryDelay = ([int]$retryDelay)
$retryLimit = ([int]$retryLimit)
虽然这可行,但我希望在 XML 中包含其他变量,例如 boolean $true / $false(并作为布尔值读入),并且希望 foreach 能够处理它们的类型而不是附加行在脚本中。任何线索表示赞赏。
【问题讨论】:
-
XML 没有类型信息,除非您添加它。什么都不知道,每个元素和属性值都是一个字符串。也许你想使用 JSON 作为你的配置文件格式?
标签: xml powershell