在 Powershell 命令行中使用反引号运行 Sync-MailPublicFolders

在 Powershell 命令行中使用反引号运行 Sync-MailPublicFolders

我正在尝试运行:

```

Sync-MailPublicFolders.ps1 -凭证 (获取凭证) -CsvSummaryFile "sync_summary.csv"

```

https://docs.microsoft.com/en-us/exchange/collaboration-exo/public-folders/set-up-legacy-hybrid-public-folders,在 Windows Server 2008 R2 中(似乎没有 Powershell ISE)。

如果没有反引号,我会收到如下错误:

WARNING: Property expression "<public folder name>" isn't valid. Valid values are: Strings formed with characters from A to Z (uppercase or  lowercase), digits from 0 to 9, !, #, $, %, &, ', *, +, -, /, =, ?, ^, _, `, {, |, } or ~.
One or more periods may be embedded in an alias, but each period should be preceded and followed by at least one of the other characters. Unicode characters from U+00A1 to U+00FF are also valid in an alias, but they will be mapped to a best-fit US-ASCII string in the e-mail address, which is generated from such an alias.

使用下面这样的形式(没有就无法运行.\),我也遇到了同样的错误。

```.\Sync-MailPublicFolders.ps1 -Credential (Get-Credential) -CsvSummaryFile "sync_summary.csv"```

... 两次运行都出现错误,我怀疑这是由于反引号引起的,反引号本来应该用来转义公共文件夹名称中的空格,但很高兴它们的用途是错误的。

如果需要反引号,那么如何使用它们?

答案1

正如您所说,提示错误是因为公用文件夹别名中有空格。如果您重命名别名。您可能需要检查所有公用文件夹别名以确保它们没有无效字符。之后,您可以恢复同步。

您可以运行以下 cmdlet 来获取包含所有带空格的列表,并将其导出到 csv 文件中。注意:在下面的 cmdlet 中,如果您的问题不仅限于别名上的空格,您可以更改 where-object 过滤以尝试查找其他无效字符。

Get-MailPublicFolder | Where-Object {$_.Alias -like "* *"} | Select-Object 别名,标识 |export-csv [CSV 文件路径和名称]

获取包含所有启用邮件且别名无效的公用文件夹的 csv 文件后,执行以下 cmdlet:

Get-MailPublicFolder [公共文件夹名称] |Set-MailPublicFolder -Alias [PublicFolderAlias]

重新配置目录同步

.\Sync-MailPublicFolders.ps1 -Credential (Get-Credential) -CsvSummaryFile:[CSV 文件路径和名称]

欲了解更多信息,请参阅以下链接:

https://mymicrosoftexchange.wordpress.com/2015/02/11/public-folder-migration-request-error-creating-the-public-folder-hierarchy-property-expression-property-name-isnt-valid/

https://social.technet.microsoft.com/Forums/exchange/en-US/466106c8-33a4-4474-83eb-2f6451e0d4eb/2010-2013-public-folder-migration-failed-property-expression-isnt-valid?forum=exchangesvrdeploy

答案2

添加到 Kelvin_D 使用生成的 CSV 文件,然后使用此 javascript(使用 jquery)粘贴到 Exchange PowerShell 中

$(".jqConvertAlias").click(function (e) {
    e.preventDefault();
    var script = 'Get-MailPublicFolder -Identity "|0|" | Set-MailPublicFolder -Alias "|1|"';
    var source = $(".jqSource").val().split('\n');
    var items = [];
    $.each(source, function (index, item) {
        if (item.length > 0) {
            var displayName = item.substring(0, item.indexOf('",'));
            displayName = displayName.replace(/"/g, '');
            var newAlias = displayName.replace(/([() '&,])/g, "");
            items.push(script.replace("|0|", displayName).replace("|1|", newAlias));
        }
    });

    $(".jqResults").val(items.join("\n"));
});

带有 2 个文本区域和一个按钮的表单。将 csv 的记事本视图(来自上面的 Kelvin_D 帖子)粘贴到源中,然后单击转换按钮,复制结果输出,粘贴到 powershell 中。我看到 & 符号是可以接受的,但我不想要它们。

相关内容