Exchange Management Shell (EMS), introdotto con Microsoft Exchange Server 2007, è un'estensione di Powershell orientata agli amministratori dei server Exchange. Quest'articolo sarà il primo di una lunga (spero) serie relativa ai comandi su EMS. In tali articoli non mi soffermerò sulla storia o sulle funzioni di questa potentissima shell (l'argomento è troppo vasto per essere trattato in articoli su blog) ma mi concentrerò solamente su determinate operazioni o comandi utili.
In quest'articolo vedremo come attivare/disattivare delle caratteristiche delle caselle di posta su Exchange Server tramite EMS.
Il comando trattato in questo articolo è Set-CasMailbox che ci consente di abilitare/disabilitare le seguenti caratteristiche di una casella di posta:
- Internet Message Access Protocol (IMAP)
- Post Office Protocol (POP)
- Microsoft Outlook Web App (OWA)
- Messaging Application Programming Interface (MAPI)
- Microsoft Exchange ActiveSync
Per abilitare il protocollo IMAP sulla casella dell'utente
Set-CASMailbox UserName@DomainName -ImapEnabled $True
Per disabilitare il protocollo IMAP sulla casella dell'utente
Set-CASMailbox UserName@DomainName -ImapEnabled $False
Per abilitare il protocollo POP sulla casella dell'utente
Set-CASMailbox UserName@DomainName -PopEnabled $True
Per disabilitare il protocollo POP sulla casella dell'utente
Set-CASMailbox UserName@DomainName -PopEnabled $False
Per abilitare OWA sulla casella dell'utente
Set-CASMailbox UserName@DomainName -OWAEnabled $True
Per disabilitare OWA sulla casella dell'utente
Set-CASMailbox UserName@DomainName -OWAEnabled $False
Per abilitare il protocollo MAPI sulla casella dell'utente
Set-CASMailbox UserName@DomainName -MAPIEnabled $True
Per disabilitare il protocollo MAPI sulla casella dell'utente
Set-CASMailbox UserName@DomainName -MAPIEnabled $False
Per abilitare Exchange ActiveSync sulla casella dell'utente
Set-CASMailbox UserName@DomainName -ActiveSyncEnabled $True
Per disabilitare Exchange ActiveSync sulla casella dell'utente
Set-CASMailbox UserName@DomainName -ActiveSyncEnabled $False
Ovviamente le opzioni -ImapEnabled, -PopEnabled, -OWAEnabled, -MAPIEnabled, -ActiveSyncEnabled possono essere utilizzate anche contemporaneamente e al posto della casella di posta dell'utente possiamo utilizzare anche il display name, l'alias, il Distinguished Name (DN) o dominio\account AD.
Ad es. se vogliamo abilitare l'accesso tramite OWA e disabilitare il protocollo IMAP possiamo utilizzare il seguente comando
Set-CASMailbox UserName@DomainName -OWAEnabled $True -ImapEnabled $False
E se volessimo agire su più caselle?
In questo caso potremmo preparare un file di testo con all'interno le caselle di posta su cui bisogna agire e quindi creare un ciclo che, per ogni casella di posta elencata all'interno del file, provveda ad effettuare gli opportuni settaggi/abilitazioni.
Procediamo con un esempio: supponiamo di voler abilitare/disabilitare l'accesso tramite OWA ad un elenco di caselle di posta.
Per effettuare questa operazione potremmo procedere in modi diversi. Io ho preferito procedere nel seguente modo:
- Creato un file con estensione CSV con all'interno elencate le caselle di posta su cui agire. Il file CSV non è altro che un file di testo in cui in ogni rigo è indicata la casella di posta/account su cui agire seguito da invio.
- Creato un file di script Powershell (file con estensione PS1 da lanciare tramite Exchange Management Shell) contenete i comandi da eseguire e accetta come parametri il nome del file CSV conte
Il file PS1 l'ho nominato EnableDisableOWA.ps1 mentre il file CSV elenco.csv
I due file possono essere scaricati cliccando QUI
- Scompattare i file in una cartella
- Eseguiamo EMS
- lanciamo il file ps1 tramite EMS indicando il percorso completo del file e passando, come parametri, il file CSV e $TRUE o $FALSE a seconda se vogliamo abilitare o disabilitare OWA.
ad es.
c:\EnableDisableOWA.ps1 c:\elenco.csv $TRUE
per abilitare OWA su tutte le cartelle elencate in elenco.csv
Il codice contenuto all'interno del file PS1 è il seguente
param($Arg1,$Arg2)
Set-AdServerSettings -ViewEntireForest $true
$csv = Import-Csv $Arg1 -Header @("MailboxToEnableDisable")
foreach ($line in $csv) {
Set-CASMailbox $Arg1 -OWAEnabled $Arg2
}
analizziamo passo passo lo script
param($Arg1,$Arg2)
L'istruzione param($Arg1,$Arg2) cattura i parametri passati alla chiamata del file di script. Nel nostro caso il file elenco.csv e $TRUE.
Set-AdServerSettings -ViewEntireForest $true
É utile solo nel caso in cui in Active Directory (AD) siano presenti più domini i cui utenti dispongono di casella di posta. In questo modo vengono gestiti tutti gli oggetti della foresta.
$csv = Import-Csv $Arg1 -Header @("MailboxToEnableDisable")
Importa il file CSV indicato come primo parametro durante la chiamata allo Script EnableDisableOWA.ps1
foreach ($line in $csv) {
Set-CASMailbox $Arg1 -OWAEnabled $Arg2
}
Per ogni riga del file CSV viene abilitata/disabilitato l'accesso ad OWA a seconda che sia stato passato il parametro $TRUE o $FALSE nella chiamata a EnableDisableOWA.ps1
Le funzioni del cmdlet Set-CASMailbox non finiscono qui: ci sono altri parametri che permettono di effettuare altre operazioni. Tuttavia le altre operazioni esulano dalla trattazione di questo articolo.