Scripting con Exchange Management Shell

 

Si applica a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Ultima modifica dell'argomento: 2009-12-18

Per la maggioranza delle attività generali, l'esecuzione dei cmdlet singolarmente o contemporaneamente tramite pipeline è sufficiente. Tuttavia, a volte può essere utile automatizzare le attività. Exchange Management Shell supporta un linguaggio di script molto sofisticato, basato su Microsoft.NET Framework, analogo al linguaggio di script in altre shell. Exchange Management Shell consente di creare script, dal più semplice al più complesso. Costrutti linguistici per loop, espressioni condizionali, controllo dei flussi e assegnazione delle variabili sono tutti supportati.

In ogni organizzazione sono presenti attività in qualche modo specifiche dell'organizzazione stessa. Con un libreria di file script per eseguire queste attività, gli amministratori possono risparmiare tempo ed eseguire questi script su qualsiasi computer sul quale sia installato Exchange Management Shell.

Per ulteriori informazioni su come utilizzare gli script, vedere Scripting with Windows PowerShell. Dato che Exchange Management Shell è basato sulla tecnologia Microsoft Windows PowerShell, le linee guida di script per Windows PowerShell si applicano anche a Exchange Management Shell.

Esecuzione di uno script all'interno di Exchange Management Shell

Gli utenti che abbiano famigliarità con l'ambiente Cmd.exe sanno come eseguire gli script della shell di comandi. Si tratta di semplici file di testo con estensione bat. Come i file batch, è possibile creare file script di Exchange Management Shell utilizzando un editor di testo, ad esempio Blocco note. I file script di Exchange Management Shell utilizzano l'estensione del nome file ps1.

Exchange Management Shell utilizza una directory radice per i file script quando essi vengono chiamati. Per impostazione predefinita, la directory radice è la directory <root drive>:\Program Files\Microsoft\Exchange Server\bin. È inoltre possibile verificare la directory PSHome corrente su qualsiasi computer sul quale sia in esecuzione Exchange Management Shell eseguendo $PSHome dalla riga di comando. Entrambe queste directory sono nella variabile di ambiente PATH.

Se un file script viene salvato nella directory radice, è possibile chiamarlo utilizzando il nome script. Se il file script si trova in una posizione diversa da quella corrente, devono essere utilizzati il percorso e il nome script. Se il file script si trova nella posizione corrente, è necessario aggiungere al nome script il prefisso .\.

Negli esempi seguenti vengono illustrati i requisiti della sintassi dei comandi per chiamare tre diversi script. In tutti questi esempi viene utilizzato il cmdlet Get-Date, da tre posizioni diverse.

[PS] C:\>Get-Date-Script-A.ps1
Friday, January 20, 2006 3:13:01 PM

Il file script Get-Date-Script-A.ps1 si trova nella directory specificata da $PSHhome e per la sua esecuzione è sufficiente il nome script.

[PS] C:\>c:\workingfolder\Get-Date-Script-B.ps1
Friday, January 20, 2006 3:13:25 PM

Il file script Get-Date-Script-B.ps1 si trova nella directory C:\workingfolder e per la sua esecuzione è necessario specificare il percorso completo.

[PS] C:\>.\Get-Date-Script-C.ps1
Friday, January 20, 2006 3:13:40 PM

Il file script Get-Date-Script-C.ps1 si trova nella posizione corrente, C:\, pertanto per la sua esecuzione è necessario aggiungere il prefisso .\.

[PS] C:\>Get-Date-Script-C.ps1
'Get-Date-Script-C.ps1' is not recognized as a Cmdlet, function, operable program, or script file.
At line:1 char:21
+ Get-Date-Script-C.ps1 <<<<

Nell'ultimo esempio, i risultati previsti vengono illustrati quando questo stesso script, Get-Date-Script-C.ps1, viene chiamato senza il prefisso .\.

Come procedura consigliata, specificare sempre un nome descrittivo per i file script e includere commenti nello script per descriverne lo scopo e per identificare ogni punto di interesse. Includere anche alcune informazioni sull'autore, nel caso un utente che esegua lo script abbia domande sul suo utilizzo. Utilizzare il simbolo cancelletto (#) per iniziare le righe di commento all'interno del corpo dello script.

Esecuzione di uno script da Cmd.exe

Se si desidera eseguire uno script in modo programmato tramite il servizio Utilità di pianificazione di Windows, è possibile chiamare Exchange Management Shell e includere lo script che si desidera eseguire come parametro. Dato che Exchange Management Shell è uno snap-in di Windows PowerShell, è inoltre necessario caricare lo snap-in di Exchange Management Shell quando si esegue il comando allo scopo di eseguire eventuali cmdlet correlati a Exchange. La sintassi seguente è richiesta per caricare lo snap-in di Exchange Management Shell ed eseguire lo script dal comando Cmd.exe:

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Psc1" -Command ". '<Path to Your Script>'"

Ad esempio, per eseguire lo script RetrieveMailboxes.ps1 da C:\My Scripts, eseguire il comando riportato di seguito:

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Psc1" -Command ". 'C:\My Scripts\RetrieveMailboxes.ps1'"

Per opzioni aggiuntive da utilizzare quando si chiama Exchange Management Shell dall'ambiente Cmd.exe, digitare PowerShell.exe /?

Suggerimenti da Exchange Management Console

In Microsoft Exchange Server 2007 è possibile utilizzare Exchange Management Console per visualizzare informazioni dettagliate su comandi specifici di Exchange Management Shell utilizzati per eseguire determinate attività. Quando si esegue una procedura guidata in Exchange Management Console, la procedura guidata considera le informazioni immesse dall'utente e crea un comando di Exchange Management Shell che viene quindi eseguito dal computer. È possibile copiare e incollare questo comando direttamente in Exchange Management Shell o copiarlo in un editor di testo dove è possibile modificarlo. Se si esamina in che modo Exchange Management Console crea i comandi, è possibile comprendere meglio come creare e modificare questi comandi per soddisfare le proprie esigenze future.

Ad esempio, se si crea una nuova cassetta postale per l'utente Frank Lee, le informazioni seguenti vengono visualizzate nella pagina Completamento della Creazione guidata nuova cassetta postale:

Figura 1 Pagina di completamento Creazione guidata nuova cassetta postale

Pagina di completamento nuova cassetta postale

Le informazioni visualizzate nella pagina Completamento offrono un'idea delle informazioni necessarie per essere certi che un comando analogo in Exchange Management Shell venga eseguito correttamente. Nella pagina Completamento premere Ctrl+U per copiare queste informazioni negli Appunti. È quindi possibile utilizzare un editor di testo per esaminare il comando e determinare quali informazioni modificare per aggiungere altre cassette postali. È inoltre possibile personalizzare il comando in modo che possa essere utilizzato come parte di uno script che utilizza un file con valori delimitati da virgole (con estensione csv) o un'altra origine di input per automatizzare la creazione di più cassette postali.

Verifica degli script

Quando si creano nuovi script, è sempre opportuno verificarli in un ambiente di laboratorio prima di applicarli nell'ambiente di produzione. Quando si verificano gli script in laboratorio e li si distribuisce nell'ambiente di produzione, è possibile utilizzare il parametro WhatIf disponibile in numerosi cmdlet inclusi in Exchange Management Shell per verificare che l'esecuzione dello script sia quella prevista. Il parametro WhatIf indica al comando cui è applicato di procedere all'esecuzione, ma solo per visualizzare quali oggetti saranno influenzati dall'esecuzione del comando e quali modifiche saranno apportate a tali oggetti, senza modificarli effettivamente.

Per ulteriori informazioni sul parametro WhatIf, vedere Parametri WhatIf, Confirm e ValidateOnly.

Risoluzione dei problemi relativi agli script

Gli script potrebbero non funzionare come previsto per molti motivi. Può essere difficile determinare dov'è il problema e cosa non sta funzionando correttamente. Exchange Management Shell può consentire di individuare errori di sintassi generali segnalando riga e carattere del punto di errore. Quando la sintassi di uno script è corretta ma il suo comportamento non è quello previsto, diagnosticare il problema può essere molto più complesso. Exchange Management Shell include una semplice caratteristica di debug per la risoluzione dei problemi relativi ai file script tramite l'esame di ogni passaggio di esecuzione dello script. Questa modalità è denominata analisi.

Per attiva l'analisi ed esaminare ogni passaggio di comando in uno script, utilizzare il cmdlet Set-PSDebug con il parametro Trace impostato su un valore di 1. Per esaminare ogni passaggio e ogni assegnazione di variabile man mano che vengono eseguiti, impostare il parametro Trace su un valore di 2. Per disattivare l'analisi, impostare il valore del parametro Trace su 0 (zero).

Per esaminare ogni comando in uno script riga per riga, utilizzare il cmdlet Set-PSDebug con il parametro Step. A ogni passaggio, verrà richiesta conferma prima di continuare l'operazione. In modalità Step sono disponibili le opzioni seguenti:

[Y] Yes (continue to the next step)
[A] Yes to All (continue to the end of the script)
[N] No (stop this step)
[L] No to All (stop all remaining steps)
[S] Suspend (suspend at this point and drop to a prompt)

Suspend consente di visualizzare un prompt in cui è possibile eseguire qualsiasi comando, ad esempio per verificare o impostare valori per un oggetto prima che lo script possa accedere all'oggetto stesso. Quando si è pronti per riprendere l'esecuzione dello script, digitare Exit. Il controllo torna immediatamente al punto in cui lo script era stato interrotto.