Get-IniContent
возвращает (вложенную) упорядоченную хеш-таблицу, которая представляет структуру файла INI.
Чтобы удалить запись, вы должны использовать метод .Remove()
заказанной хеш-таблицы:
# Read the INI file into a (nested) ordered hashtable.
$iniContent = Get-IniContent file.ini
# Remove the [Information] section's 'Age' entry.
$iniContent.Information.Remove('Age')
# Save the updated INI representation back to disk.
$iniContent | Out-File -Force file.ini
Поэтому вы можете изменить ваш скрипт следующим образом:
Param(
[parameter(mandatory=$true)] $FilePath,
[parameter(mandatory=$true)] $Section,
[parameter(mandatory=$true)] $EntryKey,
$EntryValue # optional: if omitted, remove the entry
)
Import-Module PsIni
$ff = Get-IniContent $FilePath
if ($PSBoundParameters.ContainsKey('EntryValue')) {
$ff.$Section.$EntryKey = $EntryValue
} else {
$ff.$Section.Remove($EntryKey)
}
$ff | Out-IniFile -FilePath $FilePath -Force
Тогда назовите это следующим образом; обратите внимание на пропуск 4-го аргумента, который требует удаления записи:
.\script.ps1 file.ini Information Age