我们有一份手机联系人列表,该列表保存在一个空的 PST 文件中的子文件夹中,名为“手机列表”。每月运行一次脚本,从文本文件中提取邮箱列表,删除所有带有我们公司名称的联系人,删除垃圾箱,然后将它们重新添加,如下所示:
foreach ($i in (Import-Csv "\\File\Share\ContactSync.txt")) { Search-Mailbox -Identity $i.alias -SearchQuery 'kind:contacts AND subject:" - CompanyName"' -DeleteContent -Force }
foreach ($i in (Import-Csv "\\File\Share\ContactSync.txt")) { Search-Mailbox -Identity $i.alias -SearchQuery 'kind:contacts' -SearchDumpsterOnly -DeleteContent -Force }
foreach ($i in (Import-Csv "\\File\Share\ContactSync.txt")) { New-MailboxImportRequest -Mailbox $i.alias -FilePath "\\File\Share\PhoneContacts.pst" -TargetRootFolder "#Contacts#" }
大约 98% 的时间里,这种方法都很好用,那些人的手机 (ActiveSync) 可以看到更改并重新同步。但最后 2% 的时间里,手机可以看到联系人被删除,但不会同步替换的联系人。为了解决这些问题,我们手动从他们的联系人中删除“手机列表”子文件夹,再次导入,这样就成功了。
因此,我们最好的猜测是 activesync 中的某些内容没有看到更改并且不会同步,但确实看到子文件夹被删除,并且当它恢复时可以正确同步。话虽如此,我无法找到一种方法来使用联系人文件夹中的简单一行命令删除子文件夹。有这样的方法吗?我找到了很多使用 Search-Mailbox 查找实际联系人和邮件项目的示例,但没有一个可以删除特定文件夹的示例。
答案1
命令Search-Mailbox
没有参数来删除特定的文件夹,以下有关该cmdlet的链接供您参考:搜索邮箱。
此外,我还尝试在 Exchange 2013 PowerShell 中运行以下命令,但没有找到任何删除特定文件夹的命令:
Get-Command | where{$_.Name -like "*Remove*" -and $_.Name -like "*Folder*"} | ft Name -AutoSize
Get-Command | where{$_.Name -like "*Folder*"} | ft Name -AutoSize
根据我的研究,我发现了一个类似的帖子:使用 Powershell 从 Exchange 2016 上的所有邮箱中删除文件夹, 作为瓦西尔·米切夫/凯文德拉蒙德其他人回答说,你可以使用远程预警系统删除特定文件夹。
希望以上信息对您有帮助!