【问题标题】:Backing up of the "Mail flow - Rules" in the "Exchange admin center"备份“Exchange 管理中心”中的“邮件流 - 规则”
【发布时间】:2020-10-08 19:12:32
【问题描述】:

我需要备份“Exchange 管理中心”中的“邮件流 - 规则”

$TransCollect = Export-TransportRuleCollection
$TransCollect1 = [System.Text.Encoding]::Unicode.GetString($TransCollect.FileData)
$TransCollect1  | Set-Content -path c:\temp\2.xml

但我无法从 XML 文件中提取任何内容,因为 XML 文件的开头是一个特殊字符。 所以如果运行.... [XML]$AppConfig = 获取内容 – 路径“c:\temp\2.xml” 我收到几个错误。 “[System.Text.Encoding]::Unicode.GetString”行本身是否有问题或 如何删除这个特殊字符。 请参阅特殊字符的屏幕截图。它显示在文件的开头“

【问题讨论】:

    标签: powershell exchange-server


    【解决方案1】:

    您看到的“特殊字符”是 Unicode(也称为 UTF-16LE)的 Byte Order Mark\xFF\xFE),因为您使用了 [System.Text.Encoding]::Unicode.GetString()。要使用 Get-Content 读取该文件,您需要使用其 -Encoding 参数指定相同的编码:

    [XML]$AppConfig = Get-Content -Path "c:\temp\2.xml" -Encoding Unicode
    

    根据您使用的 PowerShell 版本,Get-Content 默认使用不同的编码:

    • 5.1 及以下版本使用与系统的活动代码页对应的编码(通常为 ANSI)
    • 版本 6 及更高版本使用 UTF8NoBOM

    用 UTF16 编写 XML 是否有特定原因?通常,UTF-8 与 XML 一起使用

    【讨论】:

    • Get-Content –Path "c:\temp\2.xml" -Encoding Unicode -- 不起作用。它会引发一堆错误。我在帖子标题中提到的目标是在“Exchange 管理中心”中提取“邮件流 - 规则”。有没有不同的方法让我知道
    • @hdsouza 然后请编辑您的问题并解释更多您想要实现的目标向我们展示您遇到的错误(完整)。我看不到你的屏幕,所以我无法说出一堆错误是什么意思..
    • @hdsouza 我注意到(并已修复)的一件事是-Path 参数的连字符根本不是连字符,而是所谓的M dash。这可以解释错误
    【解决方案2】:

    我能够使用它并完全绕过特殊字符,并将 EXCHANGE RULES 转换为可提取的格式。

    $File_Collect = "c:\temp\1.xml"
    $TransCollect = Export-TransportRuleCollection
    Set-Content -Path $File_Collect -Value $TransCollect.FileData -Encoding Byte
    [XML]$TransXMLCollect = Get-Content –Path $File_Collect
    $TransXMLCollect.SelectNodes("//rule") | % { $_.InnerText }

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多