如何在Powershell中编辑INI文件值?

问题描述 投票:-1回答:2

我有一个INI文件:

 [Name]
    Female = 10
    Male = 30

    [Class]
    Kids = 2
    Adult = 10

我想改变每个部分的价值。请给我一个想法。

我试过这段代码:

function Set-OrAddIniValue
{
    Param(
        [string]$FilePath,
        [hashtable]$keyValueList
    )

    $content = Get-Content $FilePath

    $keyValueList.GetEnumerator() | ForEach-Object {
        if ($content -match "^$($_.Key)=")
        {
            $content= $content -replace "^$($_.Key)=(.*)", "$($_.Key)=$($_.Value)"
        }
        else
        {
            $content += "$($_.Key)=$($_.Value)"
        }
    }

    $content | Set-Content $FilePath
}

这是代码

powershell ini
2个回答
0
投票

你会这样做:

$ini = Get-IniContent "<pathToYourIniFile>"
$ini["<yourSection>"]["<yourKey>"] = "<yourValue>"
$ini | out-inifile -FilePath "<pathToYourIniFile>"

0
投票

如果您将代码更新为以下内容,则会更成功:

function Set-OrAddIniValue
{
    Param(
        [string]$FilePath,
        [hashtable]$keyValueList
    )

    $content = Get-Content $FilePath
    $keyValueList.GetEnumerator() | ForEach-Object {
        if ($content -match "$($_.Key)\s*=")
        {
            $content= $content -replace "$($_.Key)\s*=(.*)", "$($_.Key)=$($_.Value)"
        }
        else
        {
            $content += "$($_.Key)=$($_.Value)"
        }
    }

    $content | Set-Content $FilePath
}

一个问题是如果你添加额外的键/值对,它们将全部添加到最后一节。换句话说,代码不是部分感知的。

© www.soinside.com 2019 - 2024. All rights reserved.