我正在尝试运行:
```
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 文件路径和名称]
欲了解更多信息,请参阅以下链接:
答案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 中。我看到 & 符号是可以接受的,但我不想要它们。