Delegirano upravljanje ostaje jedna od najvažnijih značajki Outlooka, i to ne samo za tip scenarija “pomoćnika glavnog izvršnog direktora”. Zbog čega se čovjek zapita zašto je Microsoft zanemario delegiranje prilikom izdavanja Outlook REST API-ja i novog Outlook klijenta. Čak i nedavno objavljeno Metode “zamjene” koje su trebale riješiti nekoliko nedostataka povezanih s EWS-om ne uspijevaju donijeti paritet Graph API-ju, kada je u pitanju delegirano upravljanje. Doduše, Microsoft je objavio ažuriranje za skup PowerShell cmdleta koji omogućuje administratorima izvođenje (većine) radnji u ime krajnjeg korisnika. I dobivamo novo iskustvo delegiranja kalendara u OWA-i. Ali Outlook i EWS ne podržavaju već desetljeće.
Sadržaj objave
Uvod i preduvjeti
Dakle, upoznajte naš novi alat – PowerShell skriptu temeljenu na WinForms-u koja vam omogućuje pregled i postavljanje dopuštenja za delegiranje, i kao administrator i kao krajnji korisnik, a sve dok koristite sučelje koje odgovara iskustvu programa Outlook. U ovom početnom izdanju fokus je bio na pružanju pariteta s Outlookom, održavajući stvari što je moguće bliže izvornoj implementaciji. U usporedbi s ugrađenim alatom može se vidjeti samo manji novi dodatak, naime mogućnost delegiranja upravljanja kategorijama. Kasnije ćemo više govoriti o novim, nedostajućim i planiranim značajkama.
Za sada, prođimo kroz kratak uvod u alat. Iza lijepe fasade (prikazane na snimci zaslona dolje pored one ugrađene u Outlooku), alat koristi modul ExO PowerShell i posebno skup *-Dozvola mape poštanskog sandučića (i nekoliko drugih) cmdleta za većinu implementirane logike. Na pitanje zašto, odgovor je jednostavan: “zamjenski” API-ji su omotač za te iste cmdlete i ne nude ništa više u smislu funkcionalnosti. Osim toga, iskorištavanjem postojećih cmdlet-a također možemo osigurati da alat mogu pokrenuti i korisnici s administratorskim pristupom i “obični” korisnici koji upravljaju svojim delegatima (uz neka upozorenja, o kojima ćemo kasnije govoriti).
Što nas prirodno dovodi do preduvjeta. Osim modula Exchange Online (po mogućnosti verzija 3.9.0+, ali najmanje 3.7.2), PowerShell host mora pokretati verziju 7.1+ ili noviju zbog nekih trikova koda. Iskreno rečeno, nema prepreka za stvaranje verzije alata koja radi na Windows PowerShell-u, ali napredak zahtijeva određene žrtve. U svakom slučaju, u smislu dozvola, korisnik koji pokreće alat mora moći pokrenuti skup *-Dozvola mape poštanskog sandučića cmdlets, koji je prema zadanim postavkama dostupan svima koji imaju Stvaranje primatelja pošte uloga. Osim toga, alat će koristiti Get-ExORrecipient i Get-MailboxFolderStatistics cmdleti, dostupni praktički svima s ulogom administratora.
Zanimljiviji je scenarij krajnjeg korisnika, tj. mogućnost pokretanja alata za upravljanje vlastitim delegatima. To je omogućeno zahvaljujući činjenici da je *-Dozvola mape poštanskog sandučića cmdleti su prema zadanim postavkama uključeni u MyBaseOptions uloga, dio Zadana pravila dodjele uloga. Krajnji korisnici ipak mogu dodavati ili uklanjati dopuštenja mapama u vlastitom poštanskom sandučiću, to nije nešto neočekivano. Isto se odnosi i na Get-Recipient cmdlet i njegov brat, Get-ExORrecipient. Jedan problem koji moramo riješiti je nedostatak pristupa Get-MailboxFolderStatistics cmdlet, ali srećom, MyBaseOptions značajke uloge Get-MailboxFolder cmdlet, koji možemo koristiti umjesto njega.
Na pitanje zašto su nam potrebni navedeni cmdleti, odgovor je lokalizacija. Dok EWS-ovi GetDelegates() metoda vraća dopuštenja za skup zadanih mapa koje podržava, zamjenska metoda nije lako dostupna. Ne samo da trebamo ispitivati dopuštenja za svaku mapu pojedinačno, već trebamo znati i naziv mape, koji pak ovisi o postavkama lokalizacije za poštanski sandučić. Iritantno, ali izvedivo, i za “administratorske” i za “krajnje korisničke” scenarije.
Na kraju, budući da se alat oslanja na cmdlete Exchange Online, možete koristiti standardne kontrole za blokirati pristup krajnjeg korisnika na to.
Neki detalji implementacije
Kad smo počeli razgovarati o nekim detaljima implementacije, idemo u obilazak koda. Prva stvar koju skripta radi jest uspostavljanje veze s Exchange Online. Pokušava utvrditi je li pokrenut kao administrator ili krajnji korisnik i kasnije koristi odgovarajuće cmdlete. Jednostavna provjera valjanosti izvodi se prema Vlasnik i Delegat ulazne vrijednosti, a obje moraju odgovarati važećem korisničkom poštanskom sandučiću (dijeljeni poštanski sandučići i poštanski sandučići resursa također su dopušteni za Vlasnik vrijednost). Valjani unos je svaki identifikator koji jedinstveno označava poštanski sandučić.
Skripta će tada pokušati odrediti koja su dopuštenja dana, ako postoje Delegat ima. Kao što je gore spomenuto, ovo od nas zahtijeva ponavljanje svake od “standardnih” mapa za navedeno Vlasnik (Kalendar, Inbox, Kontakti, Zadaci i Bilješke). Kako navedene mape mogu koristiti lokalizirana imena, ne možemo kodirati njihove vrijednosti. Iskorištavamo ili Get-MailboxFolderPermission ili Get-MailboxFolder cmdlet ovisno o tome što je dostupno u trenutnoj sesiji. U scenarijima u kojima nijedan od cmdleta nije dostupan, ali još uvijek možemo iskoristiti *-Dozvola mape poštanskog sandučića cmdleti za izmjene dopuštenja, može se koristiti “zamjena”… ali ne možemo jamčiti da će alat tada raditi kako se očekuje.
Nakon što se dozvole dohvate, spremni smo za pojavljivanje obrasca. Kao što možete zamisliti, veliki dio koda obrađuje sve kontrole i događaje koji se odnose na obrazac, osiguravajući da su svi scenariji uzeti u obzir. Na primjer, potvrdni okvir “Delegat može vidjeti moje privatne stavke” mora se moći odabrati samo kada je dotični korisnik već delegat ili ga dodajemo kao takvog. Podsjećamo, “delegat” je osoba s Urednik dopuštenja na Kalendar mapu i ima uključenu oznaku “Delegat prima kopije poruka vezanih uz sastanak koje su mi poslane”.
Na kraju, moramo obraditi stvarne promjene za delegiranje dozvola, pomoću Primijeni-Promjene dopuštenja funkcija. Ovo je u biti omot tako da ga nazovemo Dodati-, Set– i/ili Remove-MailboxFolderPermission cmdlet prema potrebi, zajedno sa skupom parametara koji odgovaraju odabiru koji smo napravili u obrascu. Logika alata zajedno s provjerom valjanosti na strani poslužitelja za cmdlete osigurava da se mogu napraviti samo podržane promjene konfiguracije. Uz jednu značajnu iznimku, o kojoj smo govorili u našem nedavni članakšto može uzrokovati probleme s brisanjem (ili neispravnim prikazivanjem) oznake “delegat”.
Neki od vas vjerojatno znaju da delegiranje također uključuje Pošalji u ime dopuštenja i možda se pitate zašto nismo spomenuli Set-Poštanski sandučić cmdlet još. Uostalom, navedeni cmdlet je jedini način upravljanja Pošalji u ime u ExO? To zapravo nije jedini način, kao što je prebacivanje SharingPermissionFlags zastave Delegat vrijednost ima nuspojavu dodavanja (ili uklanjanja) Pošalji u ime dopuštenja, u dogovoru s protokol delegacijevođenje.
Kako pokrenuti alat
Nakon preuzimajući alat s GitHubamožete ga pokrenuti davanjem vrijednosti za poštanski sandučić i identitet delegata. U ovoj početnoj verziji ne postoji način za dohvaćanje svih delegata trenutno konfiguriranih na danom poštanskom sandučiću, možete ga pozvati samo s danim parom poštanski sandučić/delegat. U budućim verzijama, vjerojatno ćemo replicirati Outlook iskustvo i na tom frontu, iako trenutno ne postoji alternativa za upravljanje MeetingRequestsDeliveryScope postavljanje.
Za sada trebate navesti identitet poštanskog sandučića za koji želite upravljati delegatima putem -Vlasnik parametar, kao i identitet korisnika putem -Delegat jedan. Ako ne želite da alat čini nikakve promjene, možete iskoristiti -Samo za čitanje prekidač. Evo sažetka dostupnih parametara:
- Vlasnik – odredite identitet poštanskog sandučića za koji želite dohvatiti/upravljati delegatima. Svaki važeći identifikator za korisnički, zajednički ili resursni poštanski sandučić je prihvaćen. Ovaj parametar također možete referencirati kao njegov alias, Manager.
- Delegat – odredite identitet korisnika (pretinac) koji predstavlja delegata. Svaki važeći identifikator za korisnički poštanski sandučić je prihvaćen.
- Samo za čitanje – odredite hoće li se alat pokrenuti u načinu rada samo za čitanje ili predaje promjene (zadano). Djeluje poput prekidača -WhatIf, ali s lijenijom implementacijom. Također će onemogućiti gumb OK na obrascu, za svaki slučaj.
- Opširno – koristite ovu sklopku kako biste prisilili alat da ispiše dodatne informacije dok obrađuje zahtjev.
Evo nekoliko primjera kako pokrenuti alat:
#Manage delegation for delegate@domain.com on mailbox user@domain.com . .\FORM_Delegate.ps1 -Owner user@domain.com -Delegate delegate@domain.com #You can also designate mailboxes by name/alias . .\FORM_Delegate.ps1 -Owner gosho -Delegate vasil #Use the -ReadOnly switch to prevent changes . .\FORM_Delegate.ps1 -Owner gosho -Delegate vasil -ReadOnly
Kao što je prikazano u gornjim primjerima, možete koristiti bilo koji važeći identifikator za označavanje vlasnika ili delegata. Ipak, kada pokrećete skriptu kao krajnji korisnik, svakako navedite UPN kao vrijednost vlasnika jer će se skripta inače zaustaviti.
Buduća poboljšanja
S ovim prvim izdanjem alata, cilj nam je bio pružiti paritet s Outlook iskustvom, dok smo u isto vrijeme donosili nekoliko poboljšanja. Nema ovisnosti o Outlook klijentu ili EWS DLL-ovima što se toga tiče. U isto vrijeme, možete upravljati postavkama delegiranja u ime korisnika, sve iz poznatog sučelja, a pritom se ne morate igrati ni s jednim od PowerShell cmdleta. Dodatni bonus, uključili smo čak i podršku za nedokumentirane CanManageCategories zastava preko Delegat može upravljati kategorijama potvrdni okvir.
Ipak, postoje brojna druga poboljšanja koja se mogu napraviti na alatu. Prvo i najvažnije, mogućnost vidjeti sve delegate za određenog korisnika. Implementacija Outlooka oslanja se na dodatni dijalog za ovo, koji se lako može replicirati i zapravo smo već dali njegovu radnu verziju. Problem je u tome što PowerShell cmdleti na koje se oslanjamo ne podržavaju rad s MeetingRequestsDeliveryScope trenutna postavka i nemamo pojma hoće li se to promijeniti u bliskoj budućnosti.
Osim scenarija delegiranja, koji se uglavnom vrte oko kalendara, alat se može poboljšati robusnijom podrškom za dozvole na razini mape. Izlaganje svih zadanih mapa i mapa koje je stvorio korisnik umjesto samo pet trenutno podržanih, podrška za rekurzivna dopuštenja za podmape, podrška za prilagođene razine dopuštenja i više. S druge strane, vjerojatno nikoga nije briga za Bilješke pa bi se uklanjanje relevantnih kontrola i logike moglo smatrati logičnim.
Alat se također može poboljšati za rukovanje drugim vrstama primatelja, jer čak i grupni poštanski sandučići podržavaju dopuštenja na razini mape, ali ne i odgovarajuće delegiranje. Što se tiče izlaza, slijedi cmdlet logiku, što znači da će samo scenariji “dodavanja” generirati izlaz. Dodavanje nekih robusnijih mogućnosti ispisa/bilježenja još je jedno potencijalno poboljšanje koje treba razmotriti za buduća izdanja.
Sažetak
Ukratko, predstavljamo vam besplatni alat temeljen na korisničkom sučelju za upravljanje korisničkim postavkama delegata. Alat koristi skup (koji će uskoro biti jedina podržana metoda). *-Dozvola mape poštanskog sandučića PowerShell cmdleti i nema ovisnosti izvan Exchange Online PowerShell modula. Radi bolje od Outlooka, ima snažniju implementaciju od OWA i mogu ga koristiti i administratori i krajnji korisnici. Što je još važnije, za razliku od alata koji se temelje na EWS-u, ne zahtijeva lažno predstavljanje za korištenje, čime se ublažavaju neki sigurnosni problemi.
Kao i uvijek, slobodno poboljšajte alat kako smatrate prikladnim ili nam pošaljite povratne informacije o njegovim značajkama.

