我构建了一个简单的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比较文件,没有差异。
有什么想法吗?
答案 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
它处理保留文件的原始编码。