【问题标题】:Powershell Set-Content seems to corrupt my SSIS .dtsx filesPowershell Set-Content 似乎损坏了我的 SSIS .dtsx 文件
【发布时间】:2015-01-24 07:20:18
【问题描述】:

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

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

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: xml powershell encoding ssis


    【解决方案1】:

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

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

    Edit-File $file.PSPath $searchText $replacementText
    

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

    【讨论】:

    • 就是这样!我将原始文件与输出的 kdiff 进行了比较,它是 System UTF8 ..我添加了开关,现在可以了。谢谢!不过有一个问题。你的扩展是如何快速处理的?
    • Edit-File 命令的性能非常好 - 应该比使用流水线 PowerShell 命令更好,因为 Edit-File 在单个二进制(C# 实现)命令中完成所有操作。
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2021-10-20
    • 2013-05-23
    • 2020-03-18
    相关资源
    最近更新 更多