www.SAMURAJ-cz.com 

20.04.2024 Marcela Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

PowerShell - Exchange server

Upraveno 07.08.2013 16:10 | vytvořeno 19.11.2010 08:45 | Samuraj - Petr Bouška |
Na rozdíl od Active Directory se pro MS Exchange Server 2007 musel používat PowerShell pro řadu operací již od začátku. Některé operace byly časem doplněny do GUI Exchange Management Console, ale některé můžeme provést pouze přes PowerShell. Takže opět můj malý tahák užitečných PowerShell příkazů pro Exchange server (zatím ve verzi 2007 a 2010).

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
zobrazeno: 37867krát | Komentáře [10]

Autor:

Související články:

PowerShell

Články týkající se Microsoft skriptovacího jazyku PowerShell, který se používá ve všech nových verzích MS OS a aplikací.

Microsoft Exchange

Jednou částí mé práce je administrace poštovního serveru od firmy Microsoft, tedy Exchange Serveru. Články začínají u verze 2003 a jak jde čas, tak pokračují dále.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Piki

    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

    Sobota, 20.11.2010 13:53 | odpovědět
  2. [2] Samuraj

    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í.

    Sobota, 20.11.2010 16:16 | odpovědět
  3. [3] Vladimír Dlesk

    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

    Středa, 09.03.2011 16:36 | odpovědět
  4. [4] Samuraj

    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.

    Středa, 09.03.2011 16:41 | odpovědět
  5. [5] Jiri

    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

    Pondělí, 25.02.2013 14:33 | odpovědět
  6. [6] Samuraj

    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

    • na komentář odpověděl [7]Jiri
    Pondělí, 25.02.2013 15:41 | odpovědět
  7. [7] Jiri

    odpověď na [6]Samuraj: Děkuji moc,

    mailbox:\kalendář funguje - nečekal jsem takovou češtinu :-)

    Středa, 13.03.2013 14:07 | odpovědět
  8. [8] Milan

    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

    Pondělí, 14.07.2014 22:12 | odpovědět
  9. [9] Milan

    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

    Úterý, 22.07.2014 11:34 | odpovědět
  10. [10] Libor

    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

    Čtvrtek, 28.04.2016 12:25 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách