使用PowerShell读取NAVISION.CONFIG文件

使用PowerShell读取NAVISION.CONFIG文件,powershell,hashtable,config-files,Powershell,Hashtable,Config Files,我有一个来自NAVISION实例的配置文件 文件格式如下所示: <?xml version="1.0" encoding="UTF-8"?> <appSettings> <add key="NetType" value="Default"></add> <add key="DatabaseServer" value="SQLSERVER"></a

我有一个来自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>
我在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循环。。一定有更好/更快的方法。提前谢谢

也许吧

PS>($configfile.appSettings.add | ?{$_.key -eq "databaseserver"}).value        
SQLSERVER                                       

如果您想要一个哈希表:

[xml]$configfile = Get-Content "CustomSettings.config"
$appsettings = @{}
$configfile.appSettings.add.GetEnumerator() |
 foreach {$appsettings[$_.key] = $_.value}

我认为这是最节省内存的方法,所以我将使用这个方法。如果你真的需要使用大量的数据;我建议使用mjolinor的哈希表解决方案。谢谢你们!
[xml]$configfile = Get-Content "CustomSettings.config"
$appsettings = @{}
$configfile.appSettings.add.GetEnumerator() |
 foreach {$appsettings[$_.key] = $_.value}