刚接触 powershell,基本上抄袭了以下脚本来扫描 html 文件列表以删除不必要的逗号。我只有在服务器上运行此脚本时才会出错。可以使用一些建议或建议来修复。这是脚本。
Get-ChildItem C:\temp\emailsigs -Filter *.htm |
ForEach-Object {
$oldContent = Get-Content -Raw $_.FullName
$newContent = $oldContent -replace ' , , <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 ' , , <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。