Редактирование Powershell INI

Я хочу изменить некоторые значения в файле INI. К сожалению, у меня есть ключи в 2 разных разделах, которые имеют одинаковое имя, но нуждаются в разных значениях. Мой код используетGet-IniContent функция отPsIni.

Пример INI-файла:

[PosScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1

[ControlScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1 

Мне нужно изменить вышеуказанное на следующее:

[PosScreen]
BitmapFile=C:\Temp\FileC.bmp
Bitmap=1

[ControlScreen]
BitmapFile=C:\Temp\FileD.bmp
Bitmap=1 

Кажется, что я использую код PowerShell, но он меняет каждое значение на «Файл D». Это, очевидно, анализирует все дважды, и имя одинаково для каждого раздела.

$NewFileC = "C:\Temp\FileC.bmp"
$NewFileD = "C:\Temp\FileD.bmp"
$POSIniContent = Get-IniContent "C:\scripts\Update-EnablerImage\WINSUITE.INI"
$BOIniContent = Get-IniContent "C:\scripts\Update-EnablerImage\WINSUITE.INI"

If ($POSIniContent["PosScreen"]["BitmapFile"] -ne $NewFileC) {
  Get-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI" |
    ForEach-Object {$_ -replace "BitmapFile=.+" , "BitmapFile=$NewFileC" } |
    Set-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI"
}

If ($BOIniContent["ControlScreen"]["BitmapFile"] -ne $NewFileD) {
  Get-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI" |
    ForEach-Object {$_ -replace "BitmapFile=.+" , "BitmapFile=$NewFileD" } |
    Set-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI"
}

Моя борьба состоит в том, чтобы изменить каждого из них независимо. Я немного новичок в сценарии, так что зову на помощь. Пробовал с использованием условной логики (ForEach $line in $INIFileнапример) но не повезло с этим.

Ответы на вопрос(1)

Ваш ответ на вопрос