Články
Exchange Web Services a PowerShell
Od verze Exchange 2007 SP1 obsahuje poštovní server Exchange Web Services (EWS), tedy rozhraní pro přístup k položkám v Exchange data store. Pro programování nebo skriptování je k dispozici Exchange Web Services Managed API, což je knihovna, která dovolí využít EWS a to i třeba z PowerShellu. Můžete to být zajímavý nástroj, pouze se mi zdá podivný způsob, jak je umožněno přistupovat ke schránkám uživatelů. I když jste Exchange Admin, tak nemáte oprávnění pomocí EWS získat nějaké informace, ale musí se použít Impersonation (popis pro Exchange 2007), což je zjednodušeně řečeno nastavení speciálního oprávnění na účty uživatelů.
Tento článek je pouze malým navedením, jak EWS v PowerShellu použít.
Nejprve musíme načíst knihovnu EWS.
Import-Module -Name "C:\Program Files\Microsoft\Exchange\Web Services\1.1\Microsoft.Exchange.WebServices.dll"
Vytvoříme objekt služby Exchange, důležité je specifikovat verzi Exchange (jinak dostaneme chybu při bind, zadání s SP2 mi nefungovalo).
$exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1)
Musíme zadat adresu CAS serveru, buď ručně nebo se určí automaticky pomocí Autodiscover (pro určitého uživatele).
$exchService.Url = "https://mail.firma.local/EWS/Exchange.asmx"
$exchService.AutodiscoverUrl("bouska@firma.cz")
Další důležitý krok je, k jaké schránce a pod jakými právy budeme přistupovat, máme tři možnosti. U prvních dvou zadáváme uživatele, pod kterým budeme přistupovat, a defaultně se přistupuje k jeho schránce. První možnost, využijí se credentials aktuálního uživatele.
$exchService.UseDefaultCredentials = $true
Nebo zadáme credentials nějakého určitého uživatele, musí se zadat i jeho heslo.
$exchService.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($user, "heslo", "domain")
Poslední možnost je využít impersonalizace, tehdy přistupujeme k účtu zadanému v této funkci. Standardně pod uživatelem, který spustil skript, a ten musí mít práva pro Impersonation.
$exchService.ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, "nekdo@firma.cz")
Nyní se již můžeme připojit k nějaké složce (folder) uživatele. V příkladu se připojíme ke kalendáři.
$calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService, [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar)
Zde můžeme například zobrazit práva na kalendáři. Druhý řádek zobrazí informace o uživateli, který je přiřazen první položce.
$calendar.Permissions $calendar.Permissions[0].UserId
Práva můžeme i nastavit (pokud pro daného uživatele již práva nastavena jsou, dostaneme chybu). Na konci je třeba provést aktualizaci, aby se změna provedla.
$FolderPermission = New-Object Microsoft.Exchange.WebServices.Data.FolderPermission("nekdo-jiny@firma.cz", [Microsoft.Exchange.WebServices.Data.FolderPermissionLevel]::Reviewer)
$calendar.Permissions.Add($FolderPermission)
$calendar.Update()
Související články:
Exchange
- Nastavení Outlook Web Access (OWA) na Exchange Server 2003 [11.06.2006 15:44]
- Nastavení Outlook Mobile Access (OMA) na Exchange Server 2003 [20.06.2006 14:27]
- Nastavení Exchange ActiveSync na Exchange Server 2003 [30.06.2006 16:29]
- Exchange 2007 - problém zasekávání zpráv v Drafts [25.08.2007 12:39]
- Outlook - Zaseknutá událost v kalendáři [20.02.2008 16:43]
- Kopírování kontaktů z GALu v Outlook 2010 [27.10.2010 18:19]
- Active Directory a personální data uživatelů - PowerShell [30.10.2010 13:19]
- PowerShell - Exchange server [19.11.2010 08:45]
- Exchange Web Services a PowerShell [13.01.2011 11:00] právě čtete
- MS Outlook a konfigurace pomocí Group Policy [23.03.2011 16:30]
- Exchange 2007 a správa mobilních zařízení [13.04.2011 16:49]
- Exchange 2010 CAS Array a DAG mezi Sites [12.02.2012 18:34]
- Exchange 2010 - změna umístění databáze nebo logů [15.02.2012 21:03]
- Přechod z Exchange 2007 na Exchange 2010 - část 1 [04.03.2012 19:55]
- Přechod z Exchange 2007 na Exchange 2010 - část 2 [05.03.2012 18:08]
- Exchange 2010 a funkce synchronizace SMS [15.03.2012 16:20]
PowerShell
- PowerShell - Active Directory [14.11.2010 13:13]
- PowerShell - Exchange server [19.11.2010 08:45]
- PowerShell - Windows [12.12.2010 18:00]
- PowerShell - Ovládání aplikací a další použití [09.01.2011 18:59]
- Exchange Web Services a PowerShell [13.01.2011 11:00] právě čtete
- Active Directory Recycle Bin [31.03.2011 15:48]
- Automatizovaná kontrola prostředí pomocí PowerShellu [13.06.2011 17:35]
- Powershell - poslední přihlášení počítače či uživatele [06.09.2011 14:44]
- Exchange Server, Outlook a certifikáty v GALu [27.12.2011 14:48]
Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře
Zatím tento záznam nikdo nekomentoval.