exchange-logoogólnie

prosty scenariusz: trzeba założyć zasób, reprezentujący samochód firmowy tak, aby ludzie mogli go sobie rezerwować. następnie chcemy aby wszyscy widzieli kto go wypożyczył i dokąd zabrał. standardowo większość informacji jest ukryta i widać tylko ogólny wpis.

w tym celu należy nadać uprawnienia do kalendarza nie jest trudno i jest sporo linków, które szybko wskażą, że można to zrobić poleceniem:

Set-MailboxFolderPermission "roomResource@wfiles.pl:\calendar" -User default -AccessRights reviewer

… ale:

  • po pierwsze to nie zawsze zadziała (w Polsce można uznać, że prawie nigdy)
  • są bardziej złożone scenariusze. no i co daje 'reviewer’?? dla tego warto wiedzieć więcej – np. jakie inne uprawnienia można nadać
  • czemu nadal nie ma wszystkich informacji
  • a co przy jeszcze bardziej wymyślnych wymaganiach dotyczących automatyki? jak jeszcze może 'reagować’ taki obiekt na rezerwację?

lokalizacja

czemu w PL nie zadziała? ponieważ 'calendar’ to nazwa katalogu, a ta jest zlokalizowana. żeby było śmieszniej nazwa będzie zależna od… ustawień przeglądarki w momencie tworzenia obiektu zasobu (użytkownikom definiuje się kraj). sweet. ponieważ mam główną przeglądarkę ustawiona na en-US, żeby nie oglądać raniących w oczy auto-tłumaczeń technetowych czy portalu office365 w którym ciężko się połapać, część obiektów ma 'calendar’ a część 'kalendarz’. zakładając z command line zawsze tworzy 'calendar’ pomimo polskich regionalsów, więc mniemam, że ten sposób jest bardziej deterministyczny (ale trzeba by porobić więcej testów na różnie zlokalizowanych systemach).

czyli zapis ścieżki do konkretnego folderu to „roomResource@wfiles.pl:\kalendarz” . i znów – tyle dość łatwo i szybko można wyszperać na forach… ale pozostaje pytanie – jak wylistować wszystkie katalogi?? skoro jest kalendarz, to pewnie są jakieś inne foldery i może da się z nimi coś zrobić? i jak sprawdzić czy to jest 'calendar’ czy 'kalendarz’? ale najpierw…

uprawnienia

standardowo, po utworzeniu zasobu sali lub ekwipunq jedyne co widać w kalendarzu to 'busy’. equipmentMBXdef

można to zmienić i umożliwić bardziej pełny widok nadając uprawnienia LimitedDetails lub Reviewer (pełna lista uprawnień tutaj). różnica jest dość poważna. ograniczone detale pozwolą na zobaczenie organizatora i lokalizacji ale nie pozwolą otworzyć zdarzenia ze względu na brak uprawnień:

equipmentMBXrevequipementMBXnoaccnadanie uprawnień podglądacza (; pozwoli otworzyć wpis w kalendarzu i w pełni mu się przyjrzeć:

equipmentMBXdetaa gdzie informacje??

na pierwszy rzut oka może wygląda dobrze, ale ktoś choć trochę bardziej spostrzegawczy zauważy, że pole tematu oraz szczegółowe informacje chyba nie dają pełnych informacji. i faktycznie – standardowo, założenie jest takie: ktoś wynajmuje salę, wysyła zaproszenie, więc w tym zaproszeniu umieszcza informacje o czym będzie rozmowa, pewnie agendę, może jakieś materiały dodatkowe itd. zasób sali dostaje to samo zaproszenie co każdy inny – a to byłby niekontrolowany wyciek informacji. nie byłoby miło, gdyby cała firma wiedziała, że właśnie dyrektorzy spotykają się, np. żeby omówić zwolnienia pracowników… dla tego standardowe opcje są ustawione restrykcyjnie i wycinają wszystkie informacje.

są jednak scenariusze, w których niektóre osoby muszą wiedzieć więcej – np. dział logistyki musi wiedzieć gdzie jest samochód i po co. wtedy trzeba wykonać następujące operacje:

  • nadać ludzikom uprawnienia 'limitedDetails’ żeby widzieli 'kto’ ale niewiele więcej (set-MailboxFolderPermission)
  • nadać wybrańcom uprawnienia 'reviewer’ żeby mogli wejść i zobaczyć detale (add-MailboxFolderPermission)
  • no i skonfigurować zasób tak, żeby te informacje przyjmował a nie wycinał. (set-CalendarProcessing)

zobaczmy jakie zachowania można dla zasobu ustawić:

C:\...ive\_scriptz :))o- Get-CalendarProcessing -Identity roomResource@wfiles.pl|fl *


PSComputerName                      : outlook.office365.com
RunspaceId                          : 7518df28-1a3e-49e2-bc1b-6af5eb66bd48
PSShowComputerName                  : False
AutomateProcessing                  : AutoAccept
AllowConflicts                      : False
BookingWindowInDays                 : 180
MaximumDurationInMinutes            : 1440
AllowRecurringMeetings              : True
EnforceSchedulingHorizon            : True
ScheduleOnlyDuringWorkHours         : False
ConflictPercentageAllowed           : 0
MaximumConflictInstances            : 0
ForwardRequestsToDelegates          : True
DeleteAttachments                   : True
DeleteComments                      : False
RemovePrivateProperty               : True
DeleteSubject                       : False
AddOrganizerToSubject               : True
DeleteNonCalendarItems              : True
TentativePendingApproval            : True
EnableResponseDetails               : True
OrganizerInfo                       : True
ResourceDelegates                   : {}
RequestOutOfPolicy                  : {}
AllRequestOutOfPolicy               : False
BookInPolicy                        : {}
AllBookInPolicy                     : True
RequestInPolicy                     : {}
AllRequestInPolicy                  : False
AddAdditionalResponse               : False
AdditionalResponse                  :
RemoveOldMeetingMessages            : True
AddNewRequestsTentatively           : True
ProcessExternalMeetingMessages      : False
RemoveForwardedMeetingNotifications : False
MailboxOwnerId                      : Skoda
Identity                            : Skoda
IsValid                             : True
ObjectState                         : Changed

wszystkich nie ma sensu tłumaczyć, można przeczytać na technecie, nas interesują konkretnie DeleteSubject, DeleteComents. jak widać można również pozwolić na załączniki, kontrolować czy zatwierdzanie jest automatyczne czy wymaga ręcznego potwierdzenia, czy w polu tematu dodawana jest nazwa użytkownika… i inne. przykładowa konfiguracja zasobu:

set-MailboxFolderPermission 'roomResource@wfiles.pl:\kalendarz' -User default -AccessRights limitedDetails
add-MailboxFolderPermission 'roomResource@wfiles.pl:\kalendarz' -User logistics@wfiles.pl -AccessRights reviewer
Set-CalendarProcessing -Identity roomResource@wfiles.pl -DeleteComments $false -DeleteSubject $false

i w takim przypadq dział logistyki może zobaczyć takie krzaczki…

equipmentMBXfulllista folderów

na koniec powrócę do listy folderów. tu niestety niespodzianka: nie da się wylistować folderów dla zasobu. ponieważ zasób jest skrzynką… ale równocześnie nią nie jest. jest – i te foldery są, ale nie jest – bo tak twierdzi system. poniżej mała zabawa – wylistowanie folderów dla regularnego mailboxa, próba wylistowania dla zasobu i dowód, że jednak wszystkie foldery są…

C:\...ive\_scriptz :))o- Get-MailboxFolder -Identity nexor@wfiles.pl -GetChildren

Name                 FolderPath             HasSubfolders
----                 ----------             -------------
Conversation History {Conversation History} False
Dziennik             {Dziennik}             False
Elementy usunięte    {Elementy usunięte}    True
Elementy wysłane     {Elementy wysłane}     False
Kalendarz            {Kalendarz}            True
Kontakty             {Kontakty}             True
Mało istotne         {Mało istotne}         False
Notatki              {Notatki}              False
RSS Feeds            {RSS Feeds}            False
Skrzynka nadawcza    {Skrzynka nadawcza}    False
Skrzynka odbiorcza   {Skrzynka odbiorcza}   True
Sync Issues          {Sync Issues}          True
Wersje robocze       {Wersje robocze}       False
Wiadomości-śmieci    {Wiadomości-śmieci}    False
Zadania              {Zadania}              False


C:\...ive\_scriptz :))o- Get-MailboxFolder -Identity roomResource@wfiles.pl -GetChildren
The specified mailbox "testeq2@netwise.pl" doesn't exist.
    + CategoryInfo          : NotSpecified: (:) [Get-MailboxFolder], ManagementObjectNotFoundException
    + FullyQualifiedErrorId : [Server=VI1PR07MB1375,RequestId=2d356745-d5fe-4ff8-8deb-314d0a8e578b,TimeStamp=2015-11-0
   5 11:40:17] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 6C1FD1AF,Microsoft.Exchange.Management.Stor
  eTasks.GetMailboxFolder
    + PSComputerName        : outlook.office365.com

C:\...ive\_scriptz :))o- Get-MailboxFolderPermission 'roomResource@wfiles.pl:\inbox'

FolderName           User                 AccessRights
----------           ----                 ------------
Inbox                Default              {None}
Inbox                Anonymous            {None}

przy czym normalny user ma nazwy katalogów po polsq bo zakładając tak miał zdefiniowaną licencję, a zasób po ang. bo był zakładany z linii poleceń, a zasoby licencji nie posiadają. wykorzystanie 'get-mailboxfolderpermission’ w połączeniu z intuicją to jedyny sposób jaki znalazłem, żeby sprawdzić czy dany folder istnieje dla zasobu…

eN.

 

-o((:: sprEad the l0ve ::))o-

Comments (2)

  1. yacoob

    Odpowiedz

    Problem wersji językowej skrzynki (a więc i nazwy folderu 'Kalendarz’) można ominąć, odwołując się do atrybutu 'Foldertype’ polecenia get-mailboxfolderstatistics, który w przypadku folderu 'Kalendarz’ zawsze ma wartość 'Calendar’.

    Czyli najpierw ściągnięcie samego foldera:
    $calendarFolderName=(get-mailboxfolderstatistics -identity | where-object {$_.foldertype -eq 'Calendar’}).Name

    a potem odczytanie/dodanie/zmiana uprawnień:

    get/add/remove-mailboxfolderpermission -identity „:\$calendarFolderName”

    yacoob

  2. yacoob

    Odpowiedz

    W powyższym poobcinało w dwóch miejscach konieczność podawania adresu SMTP skrzynki.
    Prawidłowe komendy to:
    $calendarFolderName=(get-mailboxfolderstatistics -identity 'SMTP_skrzynki’ | where-object {$_.foldertype -eq ‘Calendar’}).Name
    oraz
    get/add/remove-mailboxfolderpermission -identity “SMTP_skrzynki:\$calendarFolderName”

Skomentuj yacoob Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.