如何在powershell中编辑.property文件

时间:2016-02-04 19:52:48

标签: properties-file powershell-v4.0

我有一个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)

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

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

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

请注意,>默认情况下会创建UTF-16 LE文件(带BOM),因此如果您想明确控制编码,请管道Out-FileSet-Content请改用-Encoding参数。 功能

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

  • ConvertFrom-StringData会返回一个哈希表,因此$AppProps包含一个哈希表。

  • $AppProps.GetEnumerator()通过管道逐个发送哈希表的键/值对(类型为[System.Collections.DictionaryEntry]的字典条目)。

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

警告源于使用ConvertFrom-StringData读取属性文件:

  • 排序丢失:由于散列表中无法保证密钥排序,因此重写文件时属性通常会以不同的顺序出现(至少第一次)。

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