Suggerimenti utili relativi a 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: 2007-08-24

In questo argomento sono elencati tutti i suggerimenti utili relativi a Exchange Management Shell, i collegamenti agli argomenti correlati della Guida di Microsoft Exchange Server 2007 e verrà indicata altra documentazione Microsoft appropriata. I suggerimenti utili vengono visualizzati ogni volta che si apre Exchange Management Shell.

Per visualizzare un suggerimento utile su richiesta, aprire Exchange Management Shell ed eseguire il cmdlet Get-Tip.

Suggerimento Argomenti correlati

Il paramero Identity è un "parametro posizionale". Ciò significa che è possibile utilizzare:

Get-Mailbox "domain\user" invece di: Get-Mailbox -Identity "domain\user"

È un collegamento veramente semplice.

Per tornare agli script contenuti nel percorso, digitare:

Get-Command -Type ExternalScript

Per un collegamento utile, assegnarlo al proprio profilo nel modo seguente:

Function Get-Scripts { Get-Command -Type ExternalScript }

Se si è stufi di digitare comandi infiniti quando si desidera fare qualcosa, è possibile creare un alias. digitare:

Set-Alias GetSg Get-StorageGroup

Per tutti gli alias correnti digitare:

Get-Alias

Si desidera esporta i dati delle cassette postali direttamente in un file .pst. Utilizzare il cmdlet Export-Mailbox. È anche possibile esportare più cassette postali con un unico comando. digitare:

Get-Mailbox | Export-Mailbox -PSTFolderPath <path to folder where data will be exported>

È inoltre possibile importare i file .pst nelle cassette postali utilizzando il cmdlet Import-Mailbox. Digitare:

Get-Mailbox | Import-Mailbox -PSTFolderPath <path to folder with <alias>.pst files to import>

Si desidera visualizza i membri di un gruppo di distribuzione dinamico con un filtro personalizzato. Utilizzare semplicemente il cmdlet Get-Recipient. digitare:

$DDG = Get-DynamicDistributionGroup "Contoso Marketing Managers"

Get-Recipient -RecipientPreviewFilter $DDG.RecipientFilter

Exchange Management Shell funge persino da calcolatrice. È possibile sperimentare questa funzionalità direttamente nella riga di comando:

1.2343+3123 or (23/435)*2

 

Riga di comando 911. Per ottenere assistenza, digitare:

Help <cmdlet-name> or <cmdlet-name> -?

È inoltre possibile eseguire ricerche con i caratteri jolly e corrispondenze di nomi parziali:

Help *UM*

È anche possibile ottenere ulteriori informazioni su un cmdlet mediante il seguente comando:

Get-Command <cmdlet-name>

Un collegamento veloce per ottenere tutti i parametri di un cmdlet è il seguente:

Get-Command <cmdlet-name> | Format-List Definition

oppure nella forma abbreviata:

Gcm <cmdlet-name> | Fl Def*

Il carattere tilde () dovrebbe essere familiare agli utenti di Unix. Rappresenta il collegamento alla directory radice dell'utente. Per visualizzarne l'impostazione predefinita, digitare:

Dir ~

Può essere un utile collegamento:

Cp SomeFile "~\My Documents"

Se si desidera spostare cassette postali, digitare:

Move-Mailbox

È possibile spostare tutti gli utenti dal server SRV1 al server SRV2 nel seguente modo:

Get-Mailbox -Server SRV1 | Move-Mailbox -TargetDatabase SRV2

CTRL+C è l'equivalente del comando di annullamento in Exchange Management Shell. Se l'esecuzione di un comando impiega un tempo eccessivo o se si desidera annullare velocemente un'operazione, premere CTRL+C per arrestare l'esecuzione.

 

Pushd e Popd funzionano allo stesso modo sia in Exchange Management Shell sia in cmd.exe. Digitare:

Pushd <location>

  • Pushd (informazioni in lingua inglese)

  • Popd (informazioni in lingua inglese)

Prestazioni di XML In Exchange Management Shell XML funge da tipo nativo così da consentire l'esecuzione di una serie di operazioni interessanti, tra cui le seguenti:

$Sample = [XML](Get-Content SomeXMLFile.xml)

Questo comando assegna $Sample all'oggetto effettivo XML. Per visualizzarlo, digitare:

$Sample

Per spostarsi nel comando, digitare:

$Sample.Prop1.Prop2

Non è necessaria alcuna analisi del testo quando si desidera caricare i dati XML.

I cmdlet che terminano con "Config" consentono di gestire la configurazione Singleton, una per ciascun server od organizzazione. Per queste attività non è necessario specificare un'identità, poiché è presente una sola istanza della configurazione. È possibile specificare il parametro Server se la configurazione è per singolo server.

Per ottenere un elenco di tutti gli utenti in un server Exchange 2007 non abilitati alla messaggistica unificata, utilizzare:

Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $False){$_.Name}}

Per ottenere un elenco di tutti gli utenti in un server Exchange 2007 abilitati alla messaggistica unificata, utilizzare:

Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $True){$_.Name}}

Per visualizzare l'alias dell'utente formattato in una tabella insieme al nome server Exchange 2007 dell'utente e al numero di telefono interno, digitare:

Get-UmMailbox | Format-Table ServerName,@{e={$_.SamAccountName};Label="User Alias"},@{Expression="Extensions";Label="Telephone numbers"}

Per visualizzare l'elenco dei nomi server del gateway IP di messaggistica unificata disabilitati per le chiamate in uscita e i gruppi di risposta associati a un server del gateway IP di messaggistica unificata, utilizzare:

Get-UMIPGateway | ForEach {If($_.OutCallsAllowed -Eq $False){ "Gateway Name = " +$_.Name;ForEach ($HuntGroup In $_.Huntgroups){"Huntgroups " + $Huntgroup}}}

Se si desidera verificare tutti i provider dell'elenco di indirizzi IP bloccati, è sufficiente eseguire il piping del cmdlet Get-IpBlockListProvider al cmdlet Test-IpBlockListProvider:

Get-IpBlockListProvider | Test-IpBlockListProvider -IpAddress 192.168.0.1

Prima di rimuovere un oggetto mediante il verbo Remove, utilizzare il parametro WhatIf per verificare che i risultati siano quelli previsti.

A volte è utile convertire l'output di un cmdlet in una stringa per consentire l'interazione con i cmdlet nativi. Ad esempio, digitare:

Get-Command | Out-String | Findstr "command"

Acquisizione di tutte le informazioni su Win32 WMI, quali quelle relative ai contatori Perfmon e alle configurazioni del computer locale. Ad esempio, digitare:

Get-WMIObject Win32_PerfRawData_PerfOS_Memory

Per eliminare il problema della posta indesiderata, è possibile configurare i provider dell'elenco indirizzi bloccati in tempo reale con Exchange Management Shell eseguendo i due comandi riportati di seguito:

Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True

e quindi

Add-IPBlockListProvider -Name <Name of RBL Provider> -LookupDomain <FQDN of RBL Provider> -AnyMatch $True

Accesso al registro eventi da Exchange Management Shell. Per recuperare l'intero registro eventi, eseguire:

Get-EventLog Application | Format-List

Per recuperare tutti gli eventi correlati a Exchange, eseguire:

Get-EventLog Application | Where { $_.Source -Ilike "*Exchange*" }

Uno dei vantaggi di Exchange Management Shell è la possibilità per i cmdlet di creare oggetti nella console. È poi possibile modificare l'output e organizzarlo in diversi modi. Ad esempio, per una rapida visualizzazione in formato tabulare, utilizzare Format-Table:

Get-Mailbox | Format-Table Name,Database,RulesQuota

Se si dimentica il nome di una proprietà, è possibile risolvere il problema utilizzando i caratteri jolly per recuperare tutte le proprietà che corrispondono a una parte del nome specificato:

Get-Mailbox | Format-Table Name,*SMTP*

Se si desidera lavorare con i dati contenuti in un file CSV, utilizzare Import-CSV per assegnare i dati a un oggetto. Ad esempio, digitare:

$MyCSV = Import-CSV TestFile.CSV

È poi possibile modificare facilmente i dati in Exchange Management Shell. Ad esempio, se nei dati contenuti nel file CSV esiste una colonna denominata Mailboxes, è possibile utilizzare i comandi riportati di seguito per ordinare o raggruppare i dati in base alla colonna Mailboxes:

Per ordinare: $MyCSV | Sort Mailboxes

Per raggruppare: $MyCSV | Group Mailboxes

Questo comando consente di analizzare tutti i server Cassette postali e riconnettere a uno degli archivi delle cassette postali tutte le cassette postali identificate in modo univoco ma disconnesse:

Get-ExchangeServer | `

Where { $_.IsMailboxServer -Eq '$True' } `

| ForEach { Get-MailboxStatistics -Server $_.Name `

| Where { $_.DisconnectDate -NotLike '' } `

| ForEach { Connect-Mailbox -Identity `

$_.DisplayName -Database $_.DatabaseName} }

La funzionalità di completamento con il tasto TAB consente di ridurre le digitazioni richieste per il completamento di un cmdlet. Premere il tasto TAB per completare il cmdlet che si sta digitando. Il completamento con il tasto TAB viene avviato ogni volta che è presente un trattino (-) nell'input. Ad esempio:

Get-Send<tab>

dovrebbe venire completato come Get-SendConnector. È inoltre possibile utilizzare le espressioni regolari, quali:

Get-U*P*<tab>

Se si preme il tasto TAB quando si immette questo comando, verrà eseguita una ricerca ciclica in tutti i cmdlet che corrispondono all'espressione, come ad esempio tutti i cmdlet relativi ai criteri cassetta postale di messaggistica unificata.

Se si desidera creare un gruppo di utenti di prova nel proprio ambiente di prova, utilizzare il seguente comando:

1..100 | ForEach { Net User "User$_" MyPassword=01 /ADD /Domain; Enable-Mailbox "User$_" -Database <MailboxDatabaseName> }

Se si desidera modificare le impostazioni di autenticazione in una directory virtuale di Outlook Web Access, provare con l'esempio di comando riportato. Consente di modificare l'autenticazione basata su form in autenticazione di Windows:

Set-OwaVirtualDirectory -Identity "OWA (Default Web Site)" -FormsAuthentication 0 -WindowsAuthentication 1

Se si desidera impostare le proprietà in tutte o solo in alcune directory virtuali di Outlook Web Access, eseguire il piping dell'output di Get-OwaVirtualDirectory al cmdlet Set-OwaVirtualDirectory. Il seguente comando, ad esempio, consente di impostare il livello Gzip per tutte le directory virtuali di Outlook Web Access:

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -GzipLevel High

Se si desidera rimuovere un dispositivo con ActiveSync da un elenco di dispositivi dell'utente, digitare:

Remove-ActiveSyncDevice

Questo cmdlet può essere molto utile per risolvere i problemi causati da dispositivi la cui sincronizzazione con il server non è soddisfacente.

Se si desidera cancellare tutti i dati da un dispositivo mobile, utilizzare:

Clear-ActiveSyncDevice

Specificare un'ora per cancellare il dispositivo o consentire il completamento dell'attività alla successiva connessione del dispositivo al server.

Se si desidera visualizzare un elenco di tutti i dispositivi che eseguono la sincronizzazione con la cassetta postale di un utente, digitare:

Get-ActiveSyncDeviceStatistics

Viene restituita una serie di informazioni che includono il nome del dispositivo, il sistema operativo e l'ora dell'ultima sincronizzazione.

Per recuperare la password di un utente per la sincronizzazione del dispositivo mobile, digitare:

Get-ActiveSyncDeviceStatistics -ShowRecoveryPassword

Se si desidera spostare il percorso del gruppo di archiviazione in un'altra posizione, digitare:

Move-StorageGroupPath -LogFolderPath DestLogFolder

Per modificare solo l'impostazione del percorso senza spostare i dati, utilizzare questo comando insieme al parametro ConfigurationOnly. Il comando è particolarmente utile in caso di ripristino di emergenza.

Avviso

Un utilizzo errato del cmdlet comporterà la perdita dei dati.

Se si desidera spostare il percorso del database in un'altra posizione, digitare:

Move-DatabasePath -EdbFilePath DestFileName

Per modificare solo l'impostazione del percorso del file senza spostare i dati, utilizzare questo comando insieme al parametro ConfigurationOnly. Il comando è particolarmente utile in caso di ripristino di emergenza.

Avviso

Un utilizzo errato del cmdlet comporterà la perdita dei dati.

Per impostare restrizioni di composizione per un dial plan specifico di messaggistica unificata, digitare:

$Dp = Get-UmDialPlan -Identity <Your_DialPlan_Identity>

$Dp.ConfiguredInCountryGroups.Add("Group1,91xxxxxxxxxx,91xxxxxxxxxx")

$Dp.ConfiguredInCountryGroups.Add("Group1,9xxxxxxxxxx,91xxxxxxxxxx")

$Dp.ConfiguredInCountryGroups.Add("Group1,9xxxxxxx,9xxxxxxx")

$Dp.AllowedInCountryGroups.Add("Group1")

$Dp.OutsideLineAccessCode = 9

$Dp | Set-UmDialPlan

Se si necessita di un modo semplice per aggiungere un nuovo indirizzo SMTP primario a un gruppo di cassette postali, il comando riportato di seguito consente di creare un nuovo criterio per gli indirizzi di posta elettronica in base al quale il dominio @contoso.com viene assegnato all'indirizzo SMTP primario di tutte le cassette postali con Contoso nel campo della società:

New-EmailAddressPolicy -Name Contoso -RecipientFilter {Company -Eq "Contoso"} -EnabledPrimarySMTPAddressTemplate "@contoso.com"

Se si desidera recuperare un gruppo di oggetti con identità simili, è possibile utilizzare i caratteri jolly insieme al parametro Identity per trovare più oggetti corrispondenti. digitare:

Get-Mailbox *John*

Get-ReceiveConnector *toso.com

Get-JournalRule *discovery*

Se si desidera configurare un gruppo di oggetti con identità simili, è possibile utilizzare i caratteri jolly insieme al parametro Identity quando si utilizza un cmdlet Get e si esegue il piping dell'output al cmdlet Set. Digitare:

Get-Mailbox *John* | Set-Mailbox -ProhibitSendQuota 100MB

Questo comando consente di associare tutte le cassette postali con il nome "John" all'identità della cassetta postale e impostare il parametro ProhibitSendQuota su 100MB.

Quasi tutti i cmdlet consentono di passare l'output di un nome a un altro nome per poter visualizzare o modificare gli oggetti correlati. Se si desidera, ad esempio, impostare il limite per la cassetta postale in tutte le cassette postali che risiedono in uno specifico database di cassette postali nel server, è possibile utilizzare il comando riportato di seguito:

Get-MailboxDatabase "Executives" | Get-Mailbox | Set-Mailbox -ProhibitSendQuota 300MB

Questo comando consente di recuperare tutte le cassette postali che si trovano nel database delle cassette postali "Dirigenti" e di impostare i rispettivi valori ProhibitSendQuota su 300MB.

Se si dimentica quali sono i parametri disponibili in un cmdlet, è sufficiente utilizzare il completamento con il tasto TAB. digitare:

Set-Mailbox -<tab>

Quando si digita un trattino (-) e si preme il tasto TAB, verrà eseguita una ricerca ciclica in tutti i parametri disponibili nel cmdlet. Se si desidera restringere la propria ricerca, digitare parte del nome del parametro, quindi premere il tasto Tab. digitare:

Set-Mailbox -Prohibit<tab>

Basta con il ping. È arrivato Test-MapiConnectivity. Utilizzare Test-MapiConnectivity per risolvere problemi di connettività tra utenti e server. Combinare Test-MapiConnectivity con una serie di cmdlet per specificare il problema senza dover cercare manualmente le informazioni:

Cassette postali: Get-Mailbox <Mailbox Name> | Test-MapiConnectivity

Database delle cassette postali: Get-MailboxDatabase <Database Name> | Test-MapiConnectivity

Server: Get-MailboxServer <Server Name> | Test-MapiConnectivity

Se si desidera aggiungere un alias a più gruppi di distribuzione con nome simile, digitare:

Get-DistributionGroup *Exchange* | Add-DistributionGroupMember -Member kim

Questo comando consente di aggiungere l'alias "kim" a tutti i gruppi di distribuzione che contengono il termine "Exchange".

Se si desidera registrare esattamente quello che accade durante l'utilizzo di Exchange Management Shell, Utilizzare il cmdlet Start-Transcript. Tutto quello che viene eseguito dopo l'avvio del cmdlet, verrà registrato nel file di testo specificato dall'utente. Per terminare la registrazione della sessione, utilizzare il cmdlet Stop-Transcript.

Per impostazione predefinita, il cmdlet Start-Transcript sovrascrive il file di testo di destinazione. Se si desidera aggiungere la sessione a un file esistente, utilizzare il parametro Append:

Start-Transcript c:\MySession.txt -Append

 

Di seguito è riportato un semplice suggerimento per ripetere l'esecuzione di un comando un determinato numero di volte. Invece di scrivere Per loop, utilizzare la sintassi seguente:

1..10 | ForEach { "do something here" }

Ad esempio, il comando riportato di seguito consente di creare 10 nuovi gruppi di archiviazione con i nomi da sg1 a sg10 nel server TestServer:

1..10 | ForEach { New-StorageGroup -Name "sg$_" -server TestServer }

Se si desidera sapere quali sono gli ultimi database delle cassette postali sottoposti a backup, digitare:

Get-ExchangeServer | Get-MailboxDatabase -Status | Format-Table Name, *Back*

Se si desidera spostare tutte le cassette postali da un database delle cassette postali a un altro, è sufficiente utilizzare il comando seguente:

Get-MailboxDatabase <Source Mailbox Database> | Get-Mailbox | Move-Mailbox -TargetDatabase <Destination Mailbox Database>

È inoltre possibile utilizzare i caratteri jolly con il cmdlet Get-MailboxDatabase per consolidare le cassette postali di più database delle cassette postali di origine in un unico database di destinazione.

Se uno degli utenti dispone dell'accesso alla rete ma mantiene un account di posta esterno alla propria organizzazione di Exchange, con Exchange Server 2007 è possibile creare utenti abilitati alla posta che sono account regolari di Active Directory ma che agiscono anche come contatti abilitati alla posta. Utilizzando il cmdlet Enable-MailUser, è possibile aggiungere gli attributi dei contatti di posta elettronica a qualsiasi utente esistente di Active Directory che non dispone ancora di una cassetta postale su un server di Exchange. Gli utenti della propria organizzazione di Exchange saranno quindi in grado di inviare messaggi di posta elettronica all'account di posta esterno dell'utente. digitare:

Enable-MailUser -Identity <Active Directory Alias> -ExternalEmailAddress <Destination SMTP Address>

Se si desidera modificare la quota predefinita per attivare Impedisci invio per un database delle cassette postali, digitare:

Set-MailboxDatabase <Mailbox Database Name> -ProhibitSendQuota <New Quota Size>

È possibile specificare un qualificatore di byte quando si utilizza il parametro ProhibitSendQuota. Se si desidera, ad esempio, impostare su 200 megabyte la quota per attivare Impedisci invio, digitare:

ProhibitSendQuota 200MB

È inoltre possibile configurare allo stesso modo i parametri IssueWarningQuota e ProhibitSendReceiveQuota.

Se si desidera sapere quale versione di Exchange Server è in esecuzione su ciascun server, digitare:

Get-ExchangeServer | Format-Table Name, *Version*

Per sapere su quali server Exchange 2007 non è stato ancora configurato un codice "Product Key" valido e se il periodo di valutazione è scaduto, digitare:

Get-ExchangeServer | Where { $_.IsExchange12TrialEdition -Eq $true } | Format-Table Name, *Trial*

Per determinare se un server esegue Exchange Server 2007 Standard Edition oppure Exchange Server 2007 Enterprise Edition, digitare:

Get-ExchangeServer <Server Name> | Format-Table Name, Edition

Per visualizzare quale edizione è in esecuzione su tutti i server di Exchange, omettere il parametro <Server Name>.

Per creare una nuova cassetta postale per le risorse che potrà essere utilizzata per prenotare una sala riunioni, digitare:

New-Mailbox -Name <Conference Room Name> -UserPrincipalName <SMTP Address> -Database <Mailbox Database> -OrganizationalUnit <Organizational Unit> -Room

Questo comando consente di creare un utente disabilitato in Active Directory con una cassetta postale che accetta le convocazioni di riunioni da parte degli utenti.

Per aggiungere una dichiarazione di non responsabilità a tutti i messaggi di posta elettronica in uscita, digitare:

$Condition = Get-TransportRulePredicate FromScope

$Condition.Scope = "InOrganization"

$Condition2 = Get-TransportRulePredicate SentToScope

$Condition2.Scope = "NotInOrganization"

$Action = Get-TransportRuleAction ApplyDisclaimer

$Action.Text = "Sample disclaimer text"

New-TransportRule -Name "Sample disclaimer" -Condition @($Condition, $Condition2) -Action @($Action)

Se si desidera controllare le proprietà dei messaggi di posta elettronica inviati a un dominio specifico, utilizzare i cmdlet RemoteDomain. Creare un nuovo dominio remoto utilizzando il cmdlet New-RemoteDomain. Digitare:

New-RemoteDomain -Name "Contoso.com Configuration" -DomainName contoso.com

Modificare quindi le proprietà del dominio remoto utilizzando il cmdlet Set-RemoteDomain:

Set-RemoteDomain "Contoso.com Configuration" -AutoReplyEnabled $True -AutoForwardEnabled $True

È possibile verificare quali funzionalità sono disponibili per gli utenti di Outlook Web Access utilizzando il cmdlet Set-OwaVirtualDirectory. digitare:

Set-OwaVirtualDirectory "OWA (Default Web Site)" -ContactsEnabled $True -ChangePasswordEnabled $True

I valori booleani sono parametri che possono essere valutati come $True o $False. Vengono in genere utilizzati come flag di un oggetto per modificare il comportamento dell'oggetto stesso. In Exchange Management Shell è necessario fornire un parametro booleano con $True, $False, 1 o 0. Non è accettato alcun altro valore, incluso True o False. Ad esempio, i comandi riportati di seguito consentono di impostare il parametro ExternalDsnSendHtml su $True:

Set-TransportServer <Server Name> -ExternalDsnSendHtml $True

Set-TransportServer <Server Name> -ExternalDsnSendHtml 1

Per rimuovere tutti i messaggi di posta elettronica inviati da un determinato nome di dominio dalle code di un server senza generare un rapporto di mancato recapito, digitare:

Remove-Message -WithNDR $False -Filter { FromAddress -Like "*@contoso.com" }

Se si necessita di un modo semplice per applicare i limiti di memorizzazione degli elementi eliminati in più database e server, eseguire il comando seguente per configurare la memorizzazione degli elementi eliminati in tutti i database di un server specifico:

Get-MailboxDatabase -Server <Server Name> | Set-MailboxDatabase -ItemRetention 45.00:00:00

È inoltre possibile applicare gli stessi limiti di memorizzazione per gli elementi o per le cassette postali eliminate in tutti i server della propria organizzazione:

Get-MailboxDatabase | Set-MailboxDatabase -ItemRetention 45.00:00:00 -MailboxRetention 120.00:00:00

Per sapere di quali autorizzazioni dispone un account utente di Active Directory per una cassetta postale specifica, utilizzare:

Get-Mailbox <Mailbox to Check> | Get-MailboxPermission -User <Active Directory User>

Per sapere quali sono le cassette postali per le quali un utente specifico di Active Directory dispone delle autorizzazioni, digitare:

Get-Mailbox -ResultSize Unlimited | Get-MailboxPermission -User <Active Directory User> | Format-Table Identity, AccessRights, Deny

Attenzione Il comando consente di enumerare tutte le cassette postali della propria organizzazione. Se si dispone di molte cassette postali, è consigliabile eseguire l'operazione solo su alcune cassette specifiche.

Per ottenere un elenco dello stato del backup di tutti i database delle cassette postali della propria organizzazione, digitare:

Get-MailboxDatabase -Status | Format-Table Name, Server, *Backup*

Per quanto riguarda solo le cassette postali su un server specifico, digitare:

Get-MailboxDatabase -Server <Server Name> -Status | Format-Table Name, *Backup*

Per recuperare lo stato corrente di un database o di un server di Exchange, utilizzare il parametro Status. Ad esempio:

Get-ExchangeServer -Status | Format-List

Get-MailboxDatabase -Server <Server Name> -Status | Format-List

Per visualizzare lo stato di montaggio di tutti i database delle cassette postali, digitare:

Get-MailboxDatabase -Status | Format-Table Name, Server, Mounted

Differenza tra filtro sul lato server e filtro sul lato client Il filtro sul lato server viene utilizzato con i cmdlet dei destinatari e delle code, che supportano il parametro Filter. Si tratta di cmdlet in grado di restituire insiemi di risultati di notevoli dimensioni. Il server filtra i risultati utilizzando i criteri specificati dall'utente, quindi invia i risultati filtrati. È possibile utilizzare il filtro sul lato client con qualsiasi cmdlet Tutto l'insieme dei risultati viene inviato al computer client, che poi filtra i dati e fornisce un insieme di risultati filtrati. Il filtro sul lato client utilizza il cmdlet Where-Object, che può essere abbreviato in Where.

Con la messaggistica unificata di Exchange Server 2007, è possibile reindirizzare i chiamanti non autenticati di determinati numeri telefonici interni a un operatore piuttosto che all'interno digitato. Per elencare gli utenti per i quali la messaggistica unificata indirizza i chiamanti all'operatore invece che all'utente, digitare:

Get-UMMailbox | `

Where-Object { $_.AllowUMCallsFromNonUsers -eq `

[Microsoft.Exchange.Data.Directory.Recipient.AllowUMCallsFromNonUsersFlags] "None" }

È possibile utilizzare il filtro sul lato client per restituire solo i dati da visualizzare o con cui lavorare. L'esempio riportato di seguito è un comando che consente di recuperare tutti gli account utente di Active Directory presenti nel reparto Progettazione e di inserire i risultati in una tabella a due colonne, Name e Department. Se si utilizza il parametro ResultSize, il cmdlet Get-User consente di limitare l'insieme dei risultati a 2.000 utenti.

Get-User -ResultSize 2000 | Where { $_.Department -Eq "Engineering" } | Format-Table Name, Department

La variabile speciale $_ rappresenta gli oggetti passati da un cmdlet a un altro nella pipeline. La variabile $_ viene automaticamente attivata dalla shell e viene associata all'oggetto pipeline corrente. È possibile accedere alle proprietà dell'oggetto assegnato alla variabile $_ come per qualsiasi altro oggetto. Nel seguente esempio viene descritto come visualizzare la proprietà Name per ciascun oggetto cassetta postale transitato nella pipeline:

Get-Mailbox | ForEach { $_.Name }

È possibile importare file CSV e trattarli come oggetti utilizzando il cmdlet Import-Csv. Ogni riga in un file CSV diventa un elemento in una matrice e ciascuna colonna diventa una proprietà. È possibile assegnare il file CSV a una variabile oppure eseguire il piping del relativo contenuto direttamente a un altro cmdlet. Nel seguente esempio sono presenti tre colonne nel file CSV, Name, Alias e EmailAddress, con diverse righe in cui il cmdlet ForEach eseguirà la ricerca ciclica. I dati presenti in ciascuna riga sono utilizzati per creare un nuovo contatto di posta.

Import-Csv | ForEach { New-MailContact -Name $_.Name -Alias $_.Alias -ExternalEmailAddress $_.EmailAddress -OrganizationalUnit Users }

Se si desidera personalizzare il profilo di Exchange Management Shell, eseguire il comando riportato di seguito per determinare la posizione del file Microsoft.PowerShell_profile.ps1:

$Profile

Potrebbe essere necessario creare la cartella PSConfiguration e il file Microsoft.PowerShell_profile.ps1. Al termine dell'operazione, è possibile aggiungere le funzioni e gli alias preferiti, che verranno caricati ogni volta che si apre Exchange Management Shell.

Utilizzare il seguente comando per configurare un criterio di cartella gestita che imporrà una dimensione massima di 10MB per la cartella della posta elettronica personale in tutte le cassette postali dell'organizzazione.

New-ManagedFolder -Name "Reference e-mail folder with 10mb quota" -FolderName "Personal and Reference E-mail" -StorageQuota 10MB

New-ManagedFolderMailboxPolicy "Personal Folder Policy" -ManagedFolderLinks "Reference e-mail folder with 10mb quota"

Get-Mailbox -ResultSize Unlimited | Set-Mailbox -ManagedFolderMailboxPolicy "Personal Folder Policy"

Set-MailboxServer <Server Name> -ManagedFolderAssistantSchedule "Sun.12:00-Sun.11:00"

Per visualizzare tutto quello che avviene durante l'esecuzione di un comando, includere il parametro Verbose nel comando. Il parametro consente a Exchange Management Shell di visualizzare informazioni dettagliate su ciascuna azione eseguita dal server esegue per completare il comando. Queste informazioni possono essere utili per la risoluzione dei problemi.

I cmdlet che accettano un valore di dimensione, consentono di specificare se il valore intero è espresso in kilobyte (KB), megabyte (MB), gigabyte (GB), o terabyte (TB). Ad esempio:

Set-Mailbox "Kim Akers" -ProhibitSendQuota 200MB

Con Exchange Management Shell è possibile registrare tutti i comandi relativi a Exchange che modificano gli oggetti in diversi modi. L'attività dei comandi relativi a Exchange viene registrata nel registro eventi di PowerShell. Per abilitare la registrazione dei comandi relativi a Exchange, eseguire il comando riportato di seguito:

Set-ItemProperty HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.Exchange.Management.PowerShell.Admin -Name LogpipelineExecutionDetails -value 1