如何在 powershell 中编辑 .属性 文件

How to edit a .property file in powershell

我有一个 application.properties 格式如下的文件

application.name=some thing
application.version=4.1.0.1
application.list=abc.def, ghi.jkl

现在我的任务是将 mno.pqr 附加到 application.list 我可以使用

阅读它

$AppProps = convertfrom-stringdata (get-content .\application.properties -raw)

我更改了 $AppProps 中的 Application.list 值。 如何将其保存回原始 Application.properties 文件..?

您可以尝试以下方法:

$AppProps.GetEnumerator() | % { "$($_.Name)=$($_.Value)" } > .\application.properties

请注意,> 默认创建 UTF-16 LE 文件(带 BOM),因此如果您想明确控制编码,请通过管道传输到 Out-FileSet-Content 使用 -Encoding 参数代替。

不幸的是,没有补充 ConvertTo-StringData,因此您必须创建自己的输出格式(哈希表的默认输出格式 作为属性文件):

  • ConvertFrom-StringData returns 一个哈希表,所以 $AppProps 包含一个。

  • $AppProps.GetEnumerator() 通过管道一个接一个地发送哈希表的 key/value 对([System.Collections.DictionaryEntry] 类型的字典条目)。

    • .GetEnumerator() 调用是必要的,因为 PowerShell 将哈希表视为管道中的 单个 对象。
  • % { "$($_.Name)=$($_.Value)" } 为每个 key/value 对构造输出字符串。


注意事项 源于使用 ConvertFrom-StringData 读取属性文件:

  • 顺序丢失:由于在哈希表中不能保证键的顺序,所以当您重写文件时(至少是第一次),属性通常会以不同的顺序出现。

  • 注释丢失:输入文件中的注释(第一个非空白字符为 # 的行)在阅读时被悄悄跳过,因此当您重写时会丢失它们文件。