Локализованное написание подпапки календаря Exchange
Таким образом, проблема связана с жестко запрограммированным username:calendar
в вашем скрипте, поскольку локализованное имя календаря в почтовом ящике пользователя имеет другое написание, чем вы используете.
Таким образом, вместо написания имени username:calendar
написание может быть username:kalendar
или username:agenda
зависимости от языковой локализации.
Ниже приведен некоторый метод со ссылкой, чтобы получить правописание подпапки календаря, фактически не зная локализованного правописания объекта; вы можете подключить результат к вашей команде (командам) соответствующим образом или потенциально собрать команду (и), чтобы получить ее динамически на основе DistinguishedFolderId и т. д.
Get-MailboxCalendarFolder
Get-MailboxCalendarFolder -Identity <MailboxFolderIdParameter> [-DomainController <Fqdn>]
Подробное описание
Командлет Get-MailboxCalendarFolder извлекает информацию для указанной папки календаря. Эта информация включает в себя имя папки календаря, является ли папка опубликованной или совместно используемой в данный момент, начальный и конечный диапазон опубликованных календарных дней, уровень сведений, опубликованных для календаря, можно ли искать опубликованный URL-адрес календаря в Интернете, и опубликованный URL для календаря.
источник
Powershell получает название календаря по умолчанию
Способ получить имя папки календаря по умолчанию без проверки региональных или языковых свойств.
Get-mailbox | Get-MailboxFolderStatistics -FolderScope calendar | sort-object Name | ft Identity,Name
Если у пользователя есть несколько календарей в почтовом ящике, у меня есть несколько объектов. Вы должны пройти через все из них или отфильтровать их с помощью «где-объекта», чтобы получить только календарь по умолчанию.
$calname = Get-MailboxFolderStatistics -Identity $username -FolderScope calendar | where-object {$_.FolderType -eq "Calendar"}
$calandar= $username + ":\" + $calname.Name.toString()
источник
Поиск имени папки календаря
При настройке разрешений для папок Календаря ваших пользователей, чтобы разрешить (или запретить) им просматривать друг друга статус Свободен / Занят, вы можете столкнуться с проблемой того, что пользователь локализовал имена папок, и вы не знаете, как называется папка. на своем языке. Еще хуже; Вы делаете это в скрипте, который просто использует username:\Calendar
label.
Решение здесь состоит в том, чтобы не использовать жестко закодированные имена, а вместо этого определять имя папки и использовать его в своем сценарии (или командной строке).
Чтобы сделать это действительно простым, вы можете использовать этот фрагмент кода PowerShell:
$path = $user.Identity + ":\" + (Get-MailboxFolderStatistics $user.Identity | Where-Object { $_.Foldertype -eq "Calendar" } | Select-Object -First 1).Name
Set-MailboxFolderPermission -Identity $path -User Default -AccessRights LimitedDetails
Первая строка будет искать в MailboxFolderStatistics папки типа "Календарь" и возвращает первое совпадение.
Во второй строке будет использоваться переменная $path
для установки AccessRights
для папки независимо от локализации.
Переменная $user
могла бы быть заполнена Get-User или входным файлом.
источник
Дополнительные ресурсы