读取INI文件参数

时间:2015-11-21 11:28:01

标签: sql-server windows powershell scripting

我有一个INI文件,其配置如下:

[Applications]
app1= aplication1
app2= aplication2

[BBDD]
server_bbdd = name_bbdd

[DATA]
data_dir = c:\data\

[LOGS]
data_log = c:\data\log\

我需要使用PowerShell脚本读取和加载应用程序数据。例如,对于app1,我需要将此应用程序的所有数据加载到数据库中(是一个SQL-SERVER BBDD),然后对app2执行相同的操作。

如何使用PowerShell读取和加载应用程序数据?

1 个答案:

答案 0 :(得分:0)

您可以像使用哈希一样使用ini文件并创建哈希表并将它们放入变量中。 例如 $ Applications = @ {“app1”=“aplication1”;“app2”=“aplication2”}

这个读取使用函数将读取ini文件并将这些部分分开,这些部分名称来自部分值。 我们将它读取到内存中的哈希值,您以后需要它才能输出。 "切换-regex"用于处理多个if语句。 -regex将match子句视为正则表达式(正则表达式,即RegEx字符:^。[] - g G?+ * p P w W s s d D $)。

N

之后,您可以将其读取到变量,从而将这些变量输出到文件或其他内容。

function Get-IniContent ($filePath)
    {
        $ini = @{}
        switch -regex -file $FilePath
        {
            "^\[(.+)\]" # Find Sections
            {
                $section = $matches[1]
                $ini[$section] = @{}
                $CommentCount = 0
            }
            "^(;.*)$" # Find Comments
            {
                $value = $matches[1]
                $CommentCount = $CommentCount + 1
                $name = "Comment" + $CommentCount
                $ini[$section][$name] = $value
            } 
            "(.+?)\s*=(.*)" # Find Keys
            {
                $name,$value = $matches[1..2]
                $ini[$section][$name] = $value
            }
        }
        return $ini
    }