【问题标题】:Using PowerShell to read an NAVISION .CONFIG file使用 PowerShell 读取 NAVISION .CONFIG 文件
【发布时间】:2014-03-06 13:03:15
【问题描述】:

我有一个来自 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)获取例如 DatabaseServer,它将不会返回任何内容。

这行得通;

ForEach ($keypair in $appsettings) {
    echo $($keypair.Key + "    -    " + $keypair.Value);
}

但由于我只需要 5 个值,我不想创建一个带有 5 个 IF 的 ForEach 循环。必须有更好/更快的方法。提前致谢!

【问题讨论】:

    标签: powershell hashtable configuration-files


    【解决方案1】:

    也许

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

    【讨论】:

    • 我认为这是最节省内存的方法,所以我会使用这个。如果您确实需要使用大量数据;我建议使用 mjolinor 的哈希表解决方案。谢谢两位!
    【解决方案2】:

    如果你想要一个哈希表:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2014-01-18
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多