在Powershell方面需要帮助INI文件

时间:2009-11-06 19:02:48

标签: powershell ini

这是交易,我正在浏览带有一些代码的INI文件。我们的想法是使用正则表达式返回INI文件中找到的所有类别,然后将arraylist =设置为结果。

所以这是代码:

    switch -regex -file $Path
    {
        "^\[(.+)\]$" {
            $arraylist.Add($matches[1])
        }
    }

但是,该函数不仅返回类别,还返回类别的计数。例如,如果INI文件如下所示:

[Red]
[White]
[Blue]

输出结果为:

0
1
2
Red
White
Blue

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

ArrayList.Add()返回添加项目的索引。这就是你看到数字的原因。只是将该陈述转为无效,例如:

[void]$arraylist.Add($matches[1])

或管道到Out-Null

$arraylist.Add($matches[1]) | Out-Null

答案 1 :(得分:1)

另一种选择:

$al = new-object System.Collections.ArrayList
$cat = switch -regex -file $env:WINDIR\system.ini { "^\[([^\]]+)\]$" { $_ -replace '\[|\]'}}
$al.AddRange($cat)

答案 2 :(得分:0)

我正在尝试重现你所看到但却无法解决的问题。这是我用来测试的代码的重新创建:

("[Red]","[White]","[Blue]") | Out-File Test.ini -Encoding ASCII
$Path = (get-item Test.ini)
$arraylist = new-object System.Collections.ArrayList
$matches = @()
switch -regex -file $Path {
    "^\[(.+)\]$" {
        $arraylist.Add($matches[1]) 
    }
}

$arrayList

执行此操作时,我得到以下输出:

Red   
White    
Blue

我是否遗漏了您的代码未显示的内容?