- Obecné vlastnosti
- Uživatelé a mailboxy (schránky)
- Veřejné složky (Public Folders)
- Seznamy adres (Address List)
- Zprávy a logy (email)
- Testy a kontroly
Obecné vlastnosti
Pokud chceme používat PowerShell ISE, a ne Exchange Management Shell, tak nejprve musíme načíst příkazy Exchange serveru.
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
Pro Exchange Server 2010 můžeme použít.
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
Jiná možnost je připojit se vzdáleně na Exchange Powershell. Buď si necháme zobrazit dialog pro zadání uživatelského jména a hesla a ty použijeme pro připojení.
$user = Get-Credential $ExchSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://mail.firma.local/powershell -Credential $user Import-PSSession $ExchSession # příkazy Exchange Remove-PsSession $ExchSession
Nebo využijeme údaje aktuálně přihlášeného uživatele (pod kterým spouštíme skript).
$ExchSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://mail.firma.local/powershell -Authentication Kerberos Import-PSSession $ExchSession # příkazy Exchange Remove-PsSession $ExchSession
Uživatelé a mailboxy (schránky)
Založení uživatele s mailboxem
Uživatele vytvoříme s defaultním heslem 123456
a určujeme kontejner, v kterém se účet vytvoří.
$pass = ConvertTo-SecureString -AsPlainText -Force -String '123456' New-Mailbox -Name 'Bouška Petr' -Alias 'bouska' -OrganizationalUnit 'firma.local/Firma -UserPrincipalName 'bouska@firma.local' -SamAccountName 'bouska' -FirstName 'Petr' -LastName 'Bouška' -Password $pass -ResetPasswordOnNextLogon $false -Database 'MAIL\First Storage Group\Mailbox Database' -ActiveSyncMailboxPolicy 'Default'
Informace o mailboxu
Get-Mailbox -Identity bouska | FL
Nastavení AutoAccept pro události v kalendáři
Například u zasedací místnosti chceme, aby automaticky schvalovala rezervace. Důležitý parametr je BookingWindowInDays
, který určuje, jak dlouhou (opakující se) událost můžeme zadat.
Set-MailboxCalendarSettings -Identity zasedacka -BookingWindowInDays 360 -AutomateProcessing AutoAccept -AddOrganizerToSubject $false -DeleteSubject $false
Oprávnění na mailbox
Zjištění oprávnění
Get-MailboxPermission -Identity zasedacka | FT -AutoSize
Nastavení oprávnění
Add-MailboxPermission -Identity zasedacka -User bouska -AccessRights FullAccess -InheritanceType All
Odebrání oprávnění
Remove-MailboxPermission -Identity zasedacka -User bouska -AccessRights FullAccess -InheritanceType All
Informace o kalendáří
Get-MailboxCalendarSettings -Identity zasedacka | FL
Nastavení delegace pro kalendář
Set-MailboxCalendarSettings -Identity zasedacka -ResourceDelegates bouska -ForwardRequestsToDelegates $true
Nastavení oprávnění pro kalendář
Add-MailboxFolderPermission -Identity čí-kalendář:\Calendar -User komu-dáme-práva -AccessRights Reviewer
Seznam databází
Get-MailboxDatabase
Seznam mailboxů
Get-Mailbox Get-Mailbox -Database SERVER\VIP
Seznam všech emailových adres, skupin a PF (s filtrem na část adresy)
Get-Mailbox -ResultSize unlimited | Select-Object DisplayName -ExpandProperty EmailAddresses | Where-Object {$_.SmtpAddress -like "*firma.cz*"} | FT displayName, SmtpAddress Get-DistributionGroup -ResultSize unlimited | Select-Object DisplayName -ExpandProperty EmailAddresses | Where-Object {$_.SmtpAddress -like "*firma.cz*"} | FT displayName, SmtpAddress Get-MailPublicFolder -ResultSize unlimited | Select-Object DisplayName -ExpandProperty EmailAddresses | Where-Object {$_.SmtpAddress -like "*firma.cz*"} | FT displayName, SmtpAddress
Seznam všech SMTP adres - export do CSV
Get-Recipient -ResultSize unlimited | Select Name -ExpandProperty EmailAddresses | Select Name, SmtpAddress | Export-csv d:\AllEmailAddress.csv
Hledání emailových adres obsahujících text
Get-Recipient -ResultSize unlimited | Select Name -ExpandProperty EmailAddresses | Where-Object {$_.smtpAddress -like "*@firma.it"} | FT Name, SmtpAddress
Seznam velikostí mailboxů
Get-MailboxStatistics -Database SERVER\VIP Get-MailboxStatistics -Server SERVER -Identity bouska Get-MailboxStatistics | select DisplayName,TotalItemSize,ItemCount,LastLogonTime | sort TotalItemSize
Vypnutí POP3 a IMAP
Set-CASMailbox -Identity bouska -PopEnabled $false -imapEnabled $false
Seznam mailboxů, které mají zapnutý POP3 či IMAP
Get-CASMailbox -Filter {popEnabled -eq "True"} Get-CASMailbox -Filter {imapEnabled -eq "True"}
Nastavení IMAP a POP3 pro mailbox
Uživatelé mají defaultně povolený IMAP i POP3, pokud tomu chceme zabránit, tak můžeme pouze vypnout služby. Pokud ale chceme mít pro pár vybraných účtů povoleno třeba IMAP a ostatním to vypnout, tak to jednoduše nelze. Jedno řešení je těm speciálním účtům nastavit rozšířený atribut třeba na hodnotu IMAP a všem účtům, které toto nastavení nemají vypnout.
Seznam uživatelů, kteří mají nastavený customAttribute1
(v ADUC u uživatele záložka Attribute Editor, položka extensionAttribute1
)
Get-Mailbox -Filter {customAttribute1 -eq "IMAP"}
Vypnutí POP3 pro všechny uživatele, kteří jej mají zapnuto
Get-CASMailbox -Filter {popEnabled -eq "True"} | Set-CASMailbox -PopEnabled $false
Vypnutí IMAP u všech, kteří nemají nastavený atribut
Get-CASMailbox -Filter {imapEnabled -eq "True"} | get-Mailbox | where{$_.customAttribute1 -ne "IMAP"} | Set-CASMailbox -imapEnabled $false
Změna limitu na velikost pravidel v Rules and Alerts
Uživatel může mít ve své schránce vytvořeno pouze omezené množství aktivních pravidel (Rules and Alerts). Toto omezení je dánou společnou velikostí, kterou tato pravidla zabírají, a na Exchange 2007 je to 64 kB.
Set-Mailbox -Identity bouska -RulesQuota 128kB
Veřejné složky (Public Folders)
Zjištění uživatelských oprávnění na Public Folder
Get-PublicFolderClientPermission -Server SERVER -Identity "\složky\hotline"
Nastavení uživatelských oprávnění na Public Folder
Add-PublicFolderClientPermission -Identity "\složky\hotline" -AccessRights Owner -User bouska
Zjištění oprávnění na AD objektu
Get-ADPermission -Identity hotline | FT -AutoSize
Nastavení SendAs oprávnění
Add-ADPermission -Identity hotline -User bouska -ExtendedRights Send-as
Seznam velikostí Public Folderů
Get-PublicFolderStatistics -Server SERVER -ResultSize Unlimited | Sort-Object TotalItemSize | FT Name,FolderPath,ItemCount,TotalItemSize,LastAccessTime -AutoSize
Velikost určitého Public Folderu s podsložkami
Get-PublicFolder "\Složka1\Složka2" -Recurse | Get-PublicFolderStatistics -Server SERVER -ResultSize Unlimited | ForEach-Object {$_.TotalItemSize.Value.ToMB()} | Measure-Object -Sum
Další statistiky
Get-PublicFolderStatistics -Server SERVER -ResultSize Unlimited | FT Name, FolderPath, ItemCount, @{label=’TotalItemSize(KB)’;Expression={$_.TotalItemSize.Value.ToKB()}} Get-PublicFolderStatistics -Server SERVER -ResultSize Unlimited | ForEach-Object {$_.TotalItemSize.Value.ToMB()} | Measure-Object -Sum Get-PublicFolderStatistics -Server SERVER -ResultSize Unlimited | Measure-Object -Sum -Property ItemCount
Seznam Public Folderů, jak velký je jejich soubor a kolik obsahuje prázdného místa
Hodnota AvailableNewMailboxSpace nám ukazuje, kolik místa můžeme uvolnit, když provedeme Offline Defrag.
Get-PublicFolderDatabase -Status | FT Name, DatabaseSize, AvailableNewMailboxSpace
Seznamy adres (Address List)
Seznam všech Address List
Get-AddressList
Přejmenování Address Listu
Změna jména a zobrazovaného jména seznamu. Jméno můžeme změnit i přes GUI, ale nezměníme tam DisplayName, takže uživatelé v Outlooku stále uvidí staré jméno.
Set-AddressList -Identity "All Users " -Name "Zaměstnanci" Set-AddressList -Identity "Zaměstnanci" -DisplayName "Zaměstnanci"
Zprávy a logy (email)
Administrator Audit Log
Od Exchange 2010 SP1 se ukládá záznam o každém administrátorském zásahu do speciálního arbitration mailboxu. Informace z něj můžeme získat pomocí dvou cmdletů nebo ECP.
Jednoduše můžeme zobrazit použití určitého cmdletu.
Search-AdminAuditLog -Cmdlets New-Mailbox
Nebo si výsledek dotazu můžeme nechat zaslat na email v podobě XML.
New-AdminAuditLogSearch -Name "Mailbox change log" -Cmdlets New-Mailbox, Set-Mailbox -StatusMailRecipients bouska@oksystem.cz -StartDate 11/01/2013 -EndDate 11/30/2013
Nalezení určitých zpráv za danou dobu
Potřebujeme zjistit, jestli za poslední den přišla nějaká zpráva na určitou adresu, nebo chceme vypsat všechny příchozí zprávy od nějaké odesílatele, podobných situací je mnoho. Použijeme cmdlet
Get-MessageTrackingLog
, který, jak již název napovídá, prochází message tracking log a vyhledává určité záznamy. Specifikovat můžeme kategorii (jako Receive, Send), odesílatele, příjemce, časové rozmezí, předmět (subject - pokud jej logujeme), apod.
Get-MessageTrackingLog -server MAIL1 -EventID "RECEIVE" -Recipients "samuraj@samuraj-cz.com" -Start "01/12/2010 00:00:00" -End "03/12/2010 23:59:59" | Group Recipients | FL
Get-MessageTrackingLog -server MAIL1 -EventID "RECEIVE" -Sender "samuraj@samuraj-cz.com" -Recipients "samuraj@samuraj-cz.com" -MessageSubject "dotaz" -Start "06/12/2010 16:00:00" -End "06/12/2010 17:00:00" | FT Timestamp, Sender, MessageSubject -AutoSize
Pokud chceme zjistit, jestli za poslední hodinu přišla nějaká zpráva, můžeme například použít.
$time = Get-Date $mails = Get-MessageTrackingLog -server OKMAIL1 -EventID "RECEIVE" -Sender "samuraj@samuraj-cz.com" -Recipients "samuraj@samuraj-cz.com" -Start $time.AddHours(-1) -End $time | FT Timestamp, Sender, MessageSubject -AutoSize ($mails | Measure-Object).Count
Statistiky za poslední dobu
Může se hodit zjistit různé statistické údaje z odesílané a přijímané pošty. Takže třeba top 10 adres z jakých byla odesílána pošta za posledních 12 hodin.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-12) -End (Get-Date) -ResultSize unlimited | group-object -Property Sender | Sort-Object Count -Descending | Select -First 10 | FT Count, Name
Nebo podobně, počty zpráv odeslaných z adresa za poslední hodinu.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-1) -End (Get-Date) -ResultSize unlimited | group-object -Property Sender | FT Count, Name
Další podobný příklad je počet zpráv pro příjemce za dané období.
Get-MessageTrackingLog -Start “8/6/2013 08:00:00” -End “8/6/2013 10:00:00” -ResultSize unlimited | Select-Object -ExpandProperty Recipients | Group-Object | FT Count, Name
A nebo seznam zpráv větších než 1MB za poslední hodinu.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-1) -End (Get-Date) -ResultSize unlimited | Select-Object sender,recipients,totalbytes,eventid | where {$_.totalbytes -gt "1000000"}
Testy a kontroly
Test funkčnosti ActiveSync pro určitého uživatele (musíme zadat jeho heslo).
Test-ActiveSyncConnectivity -MailboxCredential (get-credential user@domain)
Test synchronizace s Edge serverem a ověří, jestli má aktuální data.
Test-EdgeSynchronization
Ověřuje, jestli funguje odesílání a doručování emailů, může testovat i mezi definovanými mailbox servery a ověřovat zpoždění.
Test-Mailflow
Přihlásí se k definované nebo systémové schránce, tím ověří funkčnost MAPI, LDAP a Exchange store.
Test-MAPIconnectivity
Ověřuje funkci autodiscover.
Test-OutlookWebServices | FT -AutoSize
Ověřuje funkčnost OWA pro určitého uživatele (musíme zadat jeho heslo).
Test-OwaConnectivity -MailboxCredential (get-credential user@domain)
Ověřuje funkčnost POP3 pro určitého uživatele (musíme zadat jeho heslo)..
Test-PopConnectivity -MailboxCredential (get-credential user@domain)
Testuje jestli daná IP adresa je legitimní pro odesílání mailů z dané domény.
Test-SenderId -IPAddress 1.2.3.4 -PurportedResponsibleDomain domain.tld
Vypíše seznam všech Exchange služeb a otestuje zda běží a jsou nastaveny na autostart.
Test-ServiceHealth
Získá data o Exchange systému a podle Best Practices vypíše doporučení.
Test-SystemHealth
Komentáře
Zdravim, jeste bych doplnil co jsem nedavno hledal:
Pravidla pro trideni posty jsou defaultne nastaveny na velikost 32kb
nastaveni na 256kb
Set-Mailbox uzivatel@domena.tld -RulesQuota:256KB
odpověď na [1]Piki: Díky za tip, doplním do seznamu. Nevěděl jsem, že se tento limit dá zvednout, to se hodí.
Zdravím pane Bouška, mám na Vás dotaz. Potřeboval bych k cca. 500 účtům v AD(2003)/Exchange 2003 přidat email alias s určitou novou doménou. Neřešil jste to někdy? Děkuji
odpověď na [3]Vladimír Dlesk: Jestli se nepletu, tak to se dělá běžně a jednoduše pomocí E-mail Address Policy (jestli se to na 2003 jmenuje stejně). Defaultní politiku tam máte už teď, ta přiřazuje defaultní doménu. A můžete přidat druhou, buď pro všechny uživatele nebo je vybrat podle nějakého parametru.
Dobrý den,
super článek jako vždy
, jen mi žel nejde na Exchange 2010 SP2 zobrazit či změnit nastavení pro kalendář:
Get(Set)-MailboxFolderPermission -Identity jméno@doména:\Calendar -User komu-dáme-práva -AccessRights Reviewer
bez parametru :\calendar se mi výsledek zobrazí.
Píše to 'jméno@doména.local:\calendar' couldn't be found.
Nesetkal jste se s tím prosím někdy?
Moc děkuji
odpověď na [5]Jiri: Napadá mne, jestli se složka daného uživatele opravdu jmenuje Calendar a ne například Kalendář.
Můžete si vypsat seznam jeho složek
Get-MailboxFolderStatistics -Identity bouska | FT Identity
odpověď na [6]Samuraj: Děkuji moc,
mailbox:\kalendář funguje - nečekal jsem takovou češtinu
Dobrý den,
mohl bych požádat o radu?
Mám Exchange 2010, provozujeme PublicFolders. U některých PF se stává, že při Odpovědět všem se vyplní všichni příjemci, ale odesílatel původní zprávy se nevyplní. Při použití jen Odpovědět se původní odesílatel vyplní. Děje se to jen u některých složek. Zkusil jsem ty problémové složky znovu založit, ale výsledek je stále stejný.
Nevíte někdo kde by mohl být zakopaný pes? Nebo co udělat?
Děkuji moc
Milan
vysin1@seznam.cz
odpověď na [8]Milan: problém jsem už vyřešil, atk kdyby náhodou měl podobný problém:
Před exchangem je ještě Kerio mail server a tam bylo chybně nastaveno reply-to, jinak tento údaj v hlavičce chybí
a exchange pak odesilatele ignoruje
Milan
Dobrý deň,
spravujem exchange 2010 a v poslednej dobe sa stáva často že sa nevidí edge a exchange. Musím to riešiť zrušením subscription a znovu vytvorením. Existuje nejaký presný postup pre príkazy power shell na rušenie a vytváranie subscription ?
Už neviem v čom je chyba.
Ďakujem
Lib