Назад | Перейти на главную страницу

Как получить полный родительский путь к общей папке Exchange в Exchange 2010?

Если мне нужно выполнить процедуру в общей папке Exchange, например, изменить разрешения, но у меня нет полного пути к общей папке (который требуется в параметре -identity для большинства команд общих папок), как мне получить этот полный путь?

Некоторые ресурсы, которые я нашел, предлагают использовать powershell get-publicfolder -recurse и фильтрация результатов, но в большой организации с тысячами общих папок эта команда может занять часы, если она вообще завершится.

Я сталкивался с этим несколько раз, и это меня расстраивало. Чаще всего я преследую пользователя, который подключается к этой папке, чтобы получить от него полный путь. Один или два раза я просто отпускал это и говорил: «Я не смогу сделать это без полного пути».

Но оказывается, что get-recipient не требует полного пути для возврата результата.

[PS] > Get-Recipient myPublicFolder
Name                                                        RecipientType
----                                                        -------------
myPublicFolder                                              PublicFolder

И get-publicfolder принимает ввод конвейера. Таким образом, вы можете получить родительский путь к общей папке (например, «\ Parent \ Path \ myPublicFolder») с помощью следующей команды:

[PS] > Get-Recipient myPublicFolder | Get-PublicFolder | Format-List ParentPath
ParentPath : \Parent\Path

Я протестировал, и это работает независимо от того, поддерживает ли общедоступная папка почту или нет. Если несколько общих папок соответствуют вашим результатам получения получателя, этот конвейер вернет родительский путь для всех из них.

[PS] > Get-Recipient "marketing"
Name                                                        RecipientType
----                                                        -------------
Marketing-1                                                 PublicFolder
Marketing                                                   PublicFolder
Marketing-2                                                 PublicFolder
Marketing-3                                                 PublicFolder

[PS] > Get-Recipient "marketing" | Get-Publicfolder | fl Name,ParentPath
Name       : Marketing-1
ParentPath : \Parent\Path\Marketing
Name       : Marketing
ParentPath : \Parent\Path
Name       : Marketing-2
ParentPath : \Parent\Path\Sales
Name       : Marketing-3
ParentPath : \Parent\Path\Sales\Reports

Я думал, что поделюсь, на случай, если кто-то еще столкнется с таким же разочарованием. Это работает на Exchange 2010.

Это не работает в Exchange 2013 или более поздней версии. На момент написания этой статьи (август 2019 г.), похоже, не существует другого способа легко получить путь к общей папке без фильтрации get-publicfolder -recurse командлет.

В PowerShell:

$mailpf = Get-MailPublicFolder "yourEmailHere"
Get-PublicFolder $mailpf.EntryID

Это еще проще, если вы сделаете это:

Get-MailPublicFolder "PublicFolderName" | Get-PublicFolder

Результат будет выглядеть примерно так:

Name                                                        Parent Path
----                                                        -----------
PublicFolderName                                            \ParentFolderName

Использовать это

Get-PublicFolder -Recurse -ResultSize без ограничений | где name -match "publicfoldername"

У меня не работает. Для меня это работает, когда я использую эту команду:

Get-PublicFolder -Recurse | where {($_.MailEnabled -eq $True)}