Powershell Set-Content似乎破坏了我的SSIS .dtsx文件

时间:2015-01-24 07:20:19

标签: xml powershell encoding ssis

我构建了一个简单的PowerShell脚本,它使用get-content / set-content替换dtsx文件中的xml路径配置。

(Get-Content $file.PSPath) | ForEach-Object {$_ -replace $searchtext , $replacetext} | Set-Content $file.PSPath

当我使用它并尝试从sql server agent job运行包时,我收到一条错误消息:

"Unable to load the package as XML because of package does not have a valid XML format."

如果我自己用sublime编辑文件而不使用脚本就可以了。

替换发生正常,我使用kdiff比较文件,没有差异。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Set-Content默认为ASCII编码。我想知道文件是否是带有BOM的UTF8。尝试使用Set-Content $file.PSPath -Enc Utf8。或许它是Unicode,在这种情况下使用-Encoding Unicode

FWIW这些类型的问题是我将编辑文件添加到PowerShell Community Extensions的原因。有了它,您可以像这样编辑文件:

Edit-File $file.PSPath $searchText $replacementText

它处理保留文件的原始编码。