我想更改INI文件中的一些值.不幸的是,我有2个不同部分的密钥,它们共享相同的名称但需要不同的值.我的代码使用了Get-IniContent函数from PsIni.
示例INI文件:
[PosScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1
[ControlScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1
Run Code Online (Sandbox Code Playgroud)
我需要将以上内容更改为以下内容:
[PosScreen]
BitmapFile=C:\Temp\FileC.bmp
Bitmap=1
[ControlScreen]
BitmapFile=C:\Temp\FileD.bmp
Bitmap=1
Run Code Online (Sandbox Code Playgroud)
我正在使用的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"
}
Run Code Online (Sandbox Code Playgroud)
我的斗争是如何独立改变每一个.我是一个脚本新手,所以请求一些帮助.尝试使用条件逻辑(ForEach $line in $INIFile例如),但没有运气.