Powershell 这里,字符串在通过管道传输到输出文件时打印额外的行

Powershell 这里,字符串在通过管道传输到输出文件时打印额外的行,powershell,Powershell,我正在尝试使用Powershell(我知道,是noob之类的)以编程方式创建一个包含多行内容的文件 我的尝试如下: $ServicesYaml = @' parameters: twig.config: debug: true auto-reload: true cache: false '@ $ServicesYaml | Out-File -FilePath .\services.yml 当使用写入输出打印到控制台时,这似乎很好: 但在发送到文件时会打印额外的

我正在尝试使用Powershell(我知道,是noob之类的)以编程方式创建一个包含多行内容的文件

我的尝试如下:

$ServicesYaml = @'
parameters:
  twig.config:
    debug: true
    auto-reload: true
    cache: false
'@
$ServicesYaml | Out-File -FilePath .\services.yml
当使用
写入输出打印到控制台时,这似乎很好:

但在发送到文件时会打印额外的行:(使用Atom查看):


我做错了什么?很明显,我不希望所有不可打印的和额外的空白都被打印出来。

这是GIT和Windows文本文件字节顺序标记的Linux特性的冲突。Out-File命令使用GIT不支持的Windows编码(USC-2 LE BOM),GIT将文件视为二进制文件而不是文本。尝试使用Set-Content commandlet,它使用UTF-8而不使用


您还可以将
-Encoding
参数与
Out File
Set Content
一起使用来控制编码。值得注意的是:最后一行也可以写成
Set Content-Path。\services.yml-Value$ServicesYaml
$ServicesYaml = '
parameters:
    twig.config:
    debug: true
    auto-reload: true
    cache: false
'
$ServicesYaml | Set-Content -FilePath .\services.yml