我有来自NAVISION实例的配置文件。
文件格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<appSettings>
<add key="NetType" value="Default"></add>
<add key="DatabaseServer" value="SQLSERVER"></add>
<add key="DatabaseInstance" value="MSSQL"></add>
......
</appSettings>
我目前使用此代码:
[xml]$configfile = Get-Content "CustomSettings.config"
$appsettings = $configfile.appSettings.add.GetEnumerator()
Echo $appsettings
我在Powershell中得到的最终结果是:
key value
--- -----
NetType Default
DatabaseServer SQLSERVER
DatabaseInstance MSSQL
... .....
但是,如果我尝试使用$ appsettings.'DatabaseServer'(或$ appsettings.DatabaseServer)获取数据库服务器,它将不返回任何内容。
这有效;
ForEach ($keypair in $appsettings) {
echo $($keypair.Key + " - " + $keypair.Value);
}
但是因为我只需要有5个值,所以我不想创建一个包含5个IF的ForEach循环。必须有更好/更快的方法。提前谢谢!
答案 0 :(得分:0)
也许
PS>($configfile.appSettings.add | ?{$_.key -eq "databaseserver"}).value
SQLSERVER
答案 1 :(得分:0)
如果您想要哈希表:
[xml]$configfile = Get-Content "CustomSettings.config"
$appsettings = @{}
$configfile.appSettings.add.GetEnumerator() |
foreach {$appsettings[$_.key] = $_.value}