powershell Set-Content:找不到与参数名称“NoNewline”匹配的参数

powershell Set-Content:找不到与参数名称“NoNewline”匹配的参数

刚接触 powershell,基本上抄袭了以下脚本来扫描 html 文件列表以删除不必要的逗号。我只有在服务器上运行此脚本时才会出错。可以使用一些建议或建议来修复。这是脚本。

Get-ChildItem C:\temp\emailsigs -Filter *.htm |
  ForEach-Object {
    $oldContent = Get-Content -Raw $_.FullName
    $newContent = $oldContent -replace ' ,   &nbsp; ,   &nbsp; <br />'
    if ($newContent.Length -lt $oldContent.Length) { # was a replacement performed?
      Set-Content $_.FullName -NoNewline -Value $newContent
    }
  }

当我在 PC 上测试它时,它有效。当我在托管 html 文件的服务器上运行它时,我调整了文件位置:

Get-ChildItem C:\EmailSignatures -Filter *.htm |
  ForEach-Object {
    $oldContent = Get-Content -Raw $_.FullName
    $newContent = $oldContent -replace ' ,   &nbsp; ,   &nbsp; <br />'
    if ($newContent.Length -lt $oldContent.Length) { # was a replacement performed?
      Set-Content $_.FullName -NoNewline -Value $newContent
    }
  }

但我收到以下错误:

PS C:\_dev> C:\_dev\EsigCleanup_HTMV3.ps1
Set-Content : A parameter cannot be found that matches parameter name 'NoNewline'.
At C:\_dev\EsigCleanup_HTMV3.ps1:6 char:31
+       Set-Content $_.FullName -NoNewline -Value $newContent
+                               ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Content], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

答案1

服务器和您的 PC 是否运行相同版本的 PowerShell(检查 $PSversionTable)?NoNewLine 是在 PowerShell 5.0 中添加的。

编辑:StackOverflow 上有一个非常详细的答案,其中介绍了适用于较低版本 PowerShell 的选项 -https://stackoverflow.com/questions/35279848/prevent-trailing-newline-in-powershell-out-file-command

相关内容