Consejos del día del Shell de administración de Exchange

 

Se aplica a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Última modificación del tema: 2007-08-24

En este tema se enumeran todos los consejos del día del Shell de administración de Exchange, así como asuntos relacionados con temas de Ayuda de Microsoft Exchange Server 2007 y otro tipo de documentación pertinente de Microsoft. Los consejos del día se muestran cada vez que se abre el Shell de administración de Exchange.

Para ver los consejos del día cuando desee, abra el Shell de administración de Exchange y ejecute el cmdlet Get-Tip.

Consejo Temas relacionados

¿Sabía que el parámetro Identity es un "parámetro de posición"? Lo cual significa que puede utilizar:

Get-Mailbox "domain\user" en lugar de: Get-Mailbox -Identity "domain\user"

¡Se trata de un método abreviado que facilita el uso en gran medida!

Para devolver todos los scripts que se encuentran en su ruta, escriba:

Get-Command -Type ExternalScript

Para aprovechar la utilidad del método abreviado, asígnelo a su perfil como:

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

¿Está cansado de escribir largos comandos cada vez que desea hacer algo? ¡Cree un alias! Escriba:

Set-Alias GetSg Get-StorageGroup

Para todos los alias actuales, escriba:

Get-Alias

¿Desea exportar datos de buzón directamente a un archivo .pst? Use el cmdlet Export-Mailbox. Puede incluso exportar varios buzones con un comando. Escriba:

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

También puede importar archivos .pst a buzones con el cmdlet Import-Mailbox. Escriba:

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

¿Desea ver los miembros de un grupo de distribución dinámica que tenga un filtro personalizado? Sólo tiene que usar el cmdlet Get-Recipient. Escriba:

$DDG = Get-DynamicDistributionGroup "Contoso Marketing Managers"

Get-Recipient -RecipientPreviewFilter $DDG.RecipientFilter

¡El Shell de administración de Exchange es también una calculadora! Pruébelo directamente en la línea de comandos:

1.2343+3123 or (23/435)*2

 

¡Línea de comandos 911! ¿Necesita ayuda? Escriba:

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

Puede realizar, asimismo, búsquedas de caracteres comodín y coincidencias de nombre parciales:

Help *UM*

Puede, también, obtener más detalles sobre el cmdlet mediante:

Get-Command <cmdlet-name>

Un método abreviado rápido para obtener todos los parámetros de un cmdlet es:

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

o abreviado:

Gcm <cmdlet-name> | Fl Def*

Los usuarios de Unix deben estar familiarizados con el símbolo tilde ( ). Representa el método abreviado a su directorio raíz. Para ver lo que se evalúa de forma predeterminada, escriba:

Dir ~

Puede utilizarlo como un método abreviado práctico:

Cp SomeFile "~\My Documents"

¿Desea mover los buzones? Escriba:

Move-Mailbox

Puede mover todos los usuarios desde el servidor SRV1 al servidor SRV2 del siguiente modo:

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

CTRL+C es el equivalente del comando difícil de romper en el Shell de administración de Exchange. Si un comando tarda mucho en ejecutarse o desea cancelar una operación rápidamente, presione CTRL+C para detener la ejecución.

 

Los comandos Pushd y Popd funcionan del mismo modo en el Shell de administración de Exchange que en cmd.exe. Escriba:

Pushd <location>

¡XML sobre todo lo demás! El Shell de administración de Exchange trata los archivos XML como un tipo nativo, de modo que puede implementar acciones interesantes tales como:

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

Este comando asigna $Sample al objeto actual XML. Para verlo, escriba:

$Sample

Para hacerlo navegar, escriba:

$Sample.Prop1.Prop2

¡No es necesario analizar los textos cuando desee cargar datos XML!

Los cmdlets que terminan en "Config" administran la configuración de patrones de diseño, tanto uno por servidor como uno por organización. Para estas tareas, no tiene que especificar una identidad ya que sólo existe una instancia de la configuración. Puede que tenga que especificar el parámetro Server si la configuración es específica de cada servidor.

Para obtener una lista de todos los usuarios en un servidor de Exchange 2007 que no se encuentren habilitados para la mensajería unificada, utilice:

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

Para obtener una lista de todos los usuarios en un servidor de Exchange 2007 que se encuentren habilitados para la mensajería unificada, utilice:

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

Para mostrar el alias formateado del usuario en una tabla junto con el nombre del servidor de Exchange 2007 del usuario y la extensión telefónica, escriba:

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

Para mostrar la lista de nombres del servidor de firewall IP de mensajería unificada que están inhabilitados para llamadas externas y grupos de captura que se encuentran asociados con un servidor de firewall IP de mensajería unificada, utilice:

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

Si desea probar todos los proveedores de la lista de direcciones IP bloqueadas, sólo tiene que canalizar el cmdlet Get-IpBlockListProvider al cmdlet Test-IpBlockListProvider:

Get-IpBlockListProvider | Test-IpBlockListProvider -IpAddress 192.168.0.1

Antes de quitar un objeto mediante el verbo Remove, use el parámetro WhatIf para comprobar que los resultados son los que espera.

Algunas veces, es práctico convertir el resultado de un cmdlet en una cadena para interactuar con los cmdlets nativos. Por ejemplo, escriba:

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

Obtenga toda la información de Win32 WMI, como contadores perfmon y configuraciones de equipo local. Por ejemplo, escriba:

Get-WMIObject Win32_PerfRawData_PerfOS_Memory

¿Cansado del correo electrónico no deseado? ¿Y quién no? Puede configurar proveedores de listas de bloqueo en tiempo real (RBL) con el Shell de administración de Exchange mediante la ejecución de los dos siguientes comandos:

Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True

y, a continuación,

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

Obtenga acceso al registro de eventos desde el Shell de administración de Exchange. Para recuperar el registro de eventos al completo, ejecute:

Get-EventLog Application | Format-List

Para recuperar todos los eventos relacionados con Exchange, ejecute:

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

Uno de los beneficios del Shell de administración de Exchange es que los cmdlets pueden dirigir objetos a la consola. A continuación, puede manipular este resultado y organizarlo de un modo más interesante. Por ejemplo, para obtener una vista rápida en formato tabular, use Format-Table:

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

¿Olvidó un nombre de propiedad? No es un problema, ya que puede usar caracteres comodín para recuperar todas las propiedades que coinciden con la porción del nombre especificado:

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

¿Desea trabajar con datos contenidos en un archivo CSV? Use Import-CSV para asignar los datos a un objeto. Por ejemplo, escriba:

$MyCSV = Import-CSV TestFile.CSV

Puede manipular, a continuación, los datos fácilmente en el Shell de administración de Exchange. Por ejemplo, si existe una columna llamada Mailboxes en los datos CSV, puede utilizar los siguientes comandos para clasificar o agrupar los datos mediante la columna Mailboxes:

Para clasificar: $MyCSV | Sort Mailboxes

Para agrupar: $MyCSV | Group Mailboxes

Este comando se mueve a través de todos los servidores de buzones y vuelve a conectar todos los buzones que se identifican de forma única pero que están desconectados en cualquiera de los almacenes de buzones:

Get-ExchangeServer | `

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

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

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

| ForEach { Connect-Mailbox -Identity `

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

La implementación del tabulador reduce el número de pulsaciones que son necesarias para implementar un cmdlet. Tan sólo debe presionar la tecla del tabulador para implementar el cmdlet que está escribiendo. La implementación del tabulador se pone en marcha siempre que exista un guión (-) en la entrada. Por ejemplo:

Get-Send<tab>

debería implementarse en Get-SendConnector. Puede incluso utilizar expresiones normales, tales como:

Get-U*P*<tab>

Presione la tecla del tabulador cuando introduzca estos ciclos de comando a través de todos los cmdlets que coinciden con la expresión, tal como los cmdlets de la directiva de buzones de mensajería unificada.

¿Desea crear un grupo de usuarios de prueba en su ficha? Utilice este comando:

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

¿Desea cambiar las opciones de autenticación en un directorio virtual de Outlook Web Access? Pruebe el siguiente comando como ejemplo. Cambia la autenticación desde autenticaciones basadas en formularios a autenticación de Windows:

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

¿Desea establecer las propiedades en todos o algunos de los directorios virtuales de Outlook Web Access? Canalice el resultado de Get-OwaVirtualDirectory al cmdlet Set-OwaVirtualDirectory. Por ejemplo, el siguiente comando establece el nivel Gzip de todos los directorios virtuales Outlook Web Access:

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -GzipLevel High

¿Desea quitar un dispositivo ActiveSync desde una lista de dispositivos del usuario? Escriba:

Remove-ActiveSyncDevice

Este cmdlet puede ser útil para los dispositivos de solución de problemas que no sincronizan correctamente con el servidor.

¿Desea borrar todos los datos desde un dispositivo móvil? Use:

Clear-ActiveSyncDevice

Especifique una hora del día para borrar el dispositivo o deje que la tarea finalice la próxima vez que el dispositivo se conecte con el servidor.

¿Desea ver una lista de todos los dispositivos que sincronizan con el buzón de un usuario? Escriba:

Get-ActiveSyncDeviceStatistics

Se devuelve una serie de información incluyendo el nombre del dispositivo, el sistema operativo y la última hora de sincronización.

¿Le ha pedido uno de los usuarios recuperar su contraseña de sincronización del dispositivo móvil? Para devolver la contraseña del usuario, escriba:

Get-ActiveSyncDeviceStatistics -ShowRecoveryPassword

¿Desea mover la ruta del grupo de almacenamiento a otra ubicación? Escriba:

Move-StorageGroupPath -LogFolderPath DestLogFolder

Para cambiar únicamente la configuración de la ruta sin mover los datos, use este comando junto con el parámetro ConfigurationOnly. Este comando es especialmente útil para la recuperación ante desastres.

Advertencia

el uso inadecuado de este cmdlet provocará la pérdida de datos.

¿Desea mover la ruta de la base de datos a otra ubicación? Escriba:

Move-DatabasePath -EdbFilePath DestFileName

Para cambiar la configuración de la ruta del archivo sin mover los datos, use este comando junto con el parámetro ConfigurationOnly. Este comando es especialmente útil para la recuperación ante desastres.

Advertencia

el uso inadecuado de este cmdlet provocará la pérdida de datos.

Para establecer las restricciones de marcado en un plan de marcado específico de mensajería unificada, escriba:

$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

¿Necesita una manera sencilla de agregar una nueva dirección SMTP principal a un grupo de buzones? El siguiente comando crea una nueva directiva de direcciones de correo electrónico que asigna el dominio @contoso.com a la dirección SMTP principal de todos los buzones con Contoso en el campo compañía:

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

¿Desea recuperar un grupo de objetos que tengan identidades similares? Puede usar los caracteres comodín con el parámetro Identity para coincidir con varios objetos. Escriba:

Get-Mailbox *John*

Get-ReceiveConnector *toso.com

Get-JournalRule *discovery*

¿Desea configurar un grupo de objetos que tengan identidades similares? Puede usar los caracteres comodín con el parámetro Identity al usar un cmdlet Get y canalizar el resultado a un cmdlet Set. Escriba:

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

Este comando coincide con todos los buzones que tengan el nombre "John" en la identidad del buzón y establece el parámetro ProhibitSendQuota en 100MB.

La mayoría de los cmdlets le dejan pasar el resultado de un nombre a otro nombre para ver o modificar objetos. Por ejemplo, quizá desee establecer el límite del buzón en todos los buzones que residen en una base de datos de buzón específica en un servidor. Puede hacerlo mediante este comando:

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

Este comando recupera todos los buzones que residen en la base de datos del buzón "Ejecutivos" y establece su valor ProhibitSendQuota en 300MB.

¿Ha olvidado los parámetros disponibles en un cmdlet? ¡Sólo tiene que usar la implementación del tabulador! Escriba:

Set-Mailbox -<tab>

Cuando escribe un guión ( - ) y presiona, a continuación, la tecla del tabulador, se trasladará a través de todos los parámetros disponibles en un cmdlet. ¿Desea reducir la búsqueda? Escriba parte del nombre del parámetro y, a continuación, presione la tecla de tabulador. Escriba:

Set-Mailbox -Prohibit<tab>

Diga adiós al ping. Dé la bienvenida a Test-MapiConnectivity. Use Test-MapiConnectivity para solucionar los problemas de conectividad entre usuarios y servidores. Combine Test-MapiConnectivity con una variedad de cmdlets para tratar un asunto específico sin tener que buscar manualmente la información:

Buzones: Get-Mailbox <Mailbox Name> | Test-MapiConnectivity

Bases de datos de buzones: Get-MailboxDatabase <Database Name> | Test-MapiConnectivity

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

¿Desea agregar un alias a varios grupos de distribución que tengan un nombre similar? Escriba:

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

Este comando agrega el alias "kim" a todos los grupos de distribución que contienen la palabra "Exchange".

¿Desea registrar exactamente qué ocurre cuando está usando el Shell de administración de Exchange? Use el cmdlet Start-Transcript. Cualquier cosa que haga tras la ejecución de este cmdlet será registrada en un archivo de texto que usted especifique. Para detener el registro de la sesión, use el cmdlet Stop-Transcript.

Tenga en cuenta que el cmdlet Start-Transcript sobrescribe el archivo de texto de destino de manera predeterminada. Si desea adjuntar la sesión a un archivo existente, use el parámetro Append:

Start-Transcript c:\MySession.txt -Append

 

Le ofrecemos un sencillo consejo para repetir un comando un cierto número de veces. En lugar de escribir un bucle Para, utilice la siguiente sintaxis:

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

Por ejemplo, el siguiente comando crea 10 nuevos grupos de almacenamiento que tienen los nombres sg1 a través de sg10 en el servidor TestServer:

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

¿Desea conocer cuál fue la última vez que se realizó una copia de seguridad de las bases de datos del buzón? Escriba:

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

¿Desea mover todos los buzones desde una base de datos de buzón a otra? Puede hacerlo fácilmente mediante el siguiente comando:

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

Puede incluso usar caracteres comodín con el cmdlet Get-MailboxDatabase para consolidar buzones desde varias bases de datos de buzón de origen a una única base de datos de buzón de destino.

¿Alguno de los usuarios dispone de acceso de red pero mantiene una cuenta de correo externa fuera de la organización de Exchange? Con Exchange Server 2007, puede crear ahora usuarios con correo habilitado que sean cuentas normales de Active Directory, pero que también se comporten como contactos con correo habilitado. Con el cmdlet Enable-MailUser , puede agregar atributos de contacto de correo electrónico a cualquier usuario de Active Directory determinado que no disponga ya de un buzón en el servidor de Exchange. Los usuarios en la organización de Exchange podrán, entonces, enviar mensajes de correo electrónico a la cuenta de correo externo de ese usuario. Escriba:

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

¿Desea cambiar la cuota de prohibición de envío predeterminada por una base de datos de buzón? Escriba:

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

Puede especificar un certificador de bytes cuando use el parámetro ProhibitSendQuota. Por ejemplo, si desea establecer la cuota de prohibición de envío en 200 megabytes, escriba:

ProhibitSendQuota 200MB

Puede también configurar el parámetro IssueWarningQuota y el parámetro ProhibitSendReceiveQuota del mismo modo.

¿Desea saber qué versión de Exchange Server ejecuta cada uno de los servidores? Escriba:

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

¿Desea saber que servidores de Exchange 2007 no han sido aún configurados con una clave de producto válida y si su periodo de prueba ya ha expirado? Escriba:

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

¿Desea determinar si un servidor está ejecutando Exchange Server 2007 Standard Edition o Exchange Server 2007 Enterprise Edition? Escriba:

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

Si desea ver qué versión están ejecutando todos los servidores de Exchange, omita el parámetro <Server Name>.

¿Desea crear un nuevo buzón de recursos que pueda utilizarse para reservar una sala de reuniones? Escriba:

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

Este comando crea un usuario de Active Directory inhabilitado con un buzón que acepta solicitudes de reunión de los usuarios.

¿Desea agregar una renuncia en todos los mensajes de correo electrónico externos? Escriba:

$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)

¿Desea controlar las propiedades de los mensajes de correo electrónico enviados a un dominio específico? Use los cmdlets RemoteDomain. Cree un nuevo dominio remoto con el cmdlet New-RemoteDomain . Escriba:

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

A continuación, modifique las propiedades que desee para este dominio remoto con el cmdlet Set-RemoteDomain:

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

Puede controlar qué características están disponibles para los usuarios de Outlook Web Access con el cmdlet Set-OwaVirtualDirectory. Escriba:

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

Los valores booleanos son parámetros que pueden ser evaluados tanto como $True o como $False. Los valores booleanos se usan, normalmente, como marcadores sobre un objeto que modifican el comportamiento de ese objeto. En el Shell de administración de Exchange, debe suministrar un parámetro booleano con $True. $False, 1 o con 0. No se aceptan otros tipos de valores, incluyendo True o False. Por ejemplo, los siguientes comandos establecen el parámetro ExternalDsnSendHtml en $True:

Set-TransportServer <Server Name> -ExternalDsnSendHtml $True

Set-TransportServer <Server Name> -ExternalDsnSendHtml 1

¿Desea quitar todos los mensajes de correo electrónico que fueron enviados desde un cierto nombre de dominio en las colas de un servidor sin generar un informe de no entrega (NDR)? Escriba:

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

¿Desea conocer un modo sencillo de aplicar los límites de retención de elementos eliminados a través de varias bases de datos y servidores? Pruebe el siguiente comando para configurar la retención de elementos eliminados a través de todas las bases de datos en un servidor específico:

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

Puede, asimismo, aplicar los mismos límites de retención de elementos eliminados a través de todos los servidores en la organización:

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

¿Desea saber qué permisos tiene una cuenta de usuario de Active Directory en un buzón específico? Use:

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

¿Desea saber a qué buzones tiene permiso un usuario específico de Active Directory? Escriba:

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

Precaución: Este comando enumera todos los buzones de la organización. Si dispone de muchos buzones, quizá desee alcanzar buzones específicos.

¿Desea obtener un listado del estado de copia de seguridad de todas las bases de datos de buzón de la organización? Escriba:

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

¿Qué tal sólo los buzones de un servidor específico? Escriba:

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

Para recuperar el estado actual de un servidor o base de datos de Exchange, use el parámetro Status. Por ejemplo:

Get-ExchangeServer -Status | Format-List

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

¿Desea ver el estado acumulado de todas las bases de datos de los buzones? Escriba:

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

¿Qué diferencia existe entre el filtrado del servidor y el filtrado del cliente? El filtrado del servidor se utiliza con los cmdlets de destinatario y de cola, los cuales son compatibles con el parámetro Filter, ya que estos cmdlets pueden devolver grandes conjuntos de resultados. El servidor filtra el resultado mediante el uso de criterios que usted especifica y, a continuación, le envía los resultados filtrados. Se puede usar el filtrado de cliente con cualquier cmdlet. Todo el conjunto de resultados se envía al equipo cliente, que filtra, a continuación, los datos y proporciona un conjunto de resultados filtrado. El filtrado del cliente usa el cmdlet Where-Object, que puede acortarse a Where.

Con la mensajería unificada (UM) de Exchange Server 2007, puede redireccionar a las personas que llaman sin autenticación a ciertas extensiones de teléfono y operador en lugar de a la extensión que fue marcada. Para indicar los usuarios para los cuales la mensajería unificada transfiere a las personas que llaman sin autenticación al operador, en lugar de al usuario, escriba:

Get-UMMailbox | `

Where-Object { $_.AllowUMCallsFromNonUsers -eq `

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

Puede usar el filtrado del cliente para devolver sólo los datos que desea ver o con los que desea trabajar. El siguiente ejemplo recupera todas las cuentas de usuario de Active Directory que se encuentran en el departamento de Ingeniería y coloca los resultados en una tabla con dos columnas, Name y Department. Con el parámetro ResultSize, el cmdlet Get-User limita el conjunto de resultados a 2.000 usuarios.

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

La variable especial $_ representa los objetos que se pasan de un cmdlet a otro cmdlet en el canal. La variable $_ se inicia automáticamente por el shell y se enlaza con el objeto de canal actual. Puede obtener acceso a las propiedades del objeto asignado a la variable $_ tal como haría con cualquier otro objeto. El siguiente ejemplo muestra cómo ver la propiedad Name de cada objeto de buzón que se pasa a través del canal:

Get-Mailbox | ForEach { $_.Name }

Puede importar archivos CSV y tratarlos como objetos con el cmdlet Import-Csv. Cada fila en un archivo CSV se convierte en un elemento en un conjunto y cada columna se convierte en una propiedad. Puede asignar el archivo CSV a una variable o puede canalizar su contenido directamente a otro cmdlet. En el siguiente ejemplo, existen tres columnas en el archivo CSV, Name, Alias y EmailAddress; con varias filas por las que se trasladará el cmdlet ForEach. Los datos de cada fila se utilizan para crear un nuevo contacto de correo.

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

¿Desea personalizar el perfil del Shell de administración de Exchange? Ejecute el siguiente comando para determinar la ubicación del archivo Microsoft.PowerShell_profile.ps1:

$Profile

Puede que tenga que crear la carpeta PSConfiguration y el archivo Microsoft.PowerShell_profile.ps1. Tras haberlo hecho, puede agregar sus alias y funciones favoritas, que se cargarán cada vez que se abra el Shell de administración de Exchange.

Utilice los siguientes comandos para configurar una directiva de carpetas administradas que exigirán un tamaño máximo de carpetas de correo electrónico personal de 10MB en todos los buzones de la organización.

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"

¿Desea ver todo lo que ocurre cuando ejecuta un comando? Incluya el parámetro Verbose junto al comando. Este parámetro exige al Shell de administración de Exchange que muestre la información detallada sobre cada acción que el servidor realice para completar el comando. Esta información puede resultar útil a la hora de solucionar problemas.

Cualquier cmdlet que acepte un valor de tamaño le permite especificar si el valor de número entero es en kilobytes (KB), megabytes (MB), gigabytes (GB) o terabytes (TB). Por ejemplo:

Set-Mailbox "Kim Akers" -ProhibitSendQuota 200MB

El Shell de administración de Exchange puede registrar todos los comandos relacionados con Exchange que modifiquen objetos de algún modo. La actividad de los comandos relacionados con Exchange se registra en el registro de eventos PowerShell. Para habilitar el registro de comandos relacionados con Exchange, ejecute el siguiente comando:

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