小编Rob*_*rry的帖子

使用 Powershell 解析具有变量类型的 XML 文件

我试图从脚本中删除变量的定义,并从类似于以下内容的 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>
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容解析脚本中的 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
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但问题是它们都作为字符串读取,但有些我需要作为整数读取。为了解决这个问题,我必须在创建变量后将它们更改为整数,如下所示:

$retryDelay = ([int]$retryDelay)
$retryLimit = ([int]$retryLimit)
Run Code Online (Sandbox Code Playgroud)

虽然这可行,但我希望在 XML 中包含其他变量,例如布尔值 $true / $false (并作为布尔值读入),并且宁愿让 foreach 能够处理它们的类型,而不是脚本中的其他行。任何线索表示赞赏。

xml powershell

2
推荐指数
1
解决办法
4915
查看次数

标签 统计

powershell ×1

xml ×1