Dicas do Dia do Shell de Gerenciamento do Exchange

 

Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Tópico modificado em: 2007-08-24

Este tópico lista todas as Dicas do Dia do Shell de Gerenciamento do Exchange e os pontos relacionados aos tópicos de Ajuda do Microsoft Exchange Server 2007 ou outra documentação apropriada da Microsoft. As dicas do dia são exibidas toda vez que você abre o Shell de Gerenciamento do Exchange.

Para exibir uma dica do dia por pedido, abra o Shell de Gerenciamento do Exchange e execute o cmdlet Get-Tip.

Dica Tópicos relacionados

Você sabia que o parâmetro Identity é um "parâmetro posicional"? Isso significa que você pode usar:

Get-Mailbox "domain\user" em vez de: Get-Mailbox -Identity "domain\user"

Ele é um atalho de usabilidade perfeito!

Para retornar todos os scripts encontrados em seu caminho, digite:

Get-Command -Type ExternalScript

E para obter um atalho útil, atribua-o em seu perfil como:

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

Você está cansado de digitar um comando longo toda vez que deseja fazer algo? Atribua um alias ao comando! Digite:

Set-Alias GetSg Get-StorageGroup

Para todos os alias atuais, digite:

Get-Alias

Quer exportar os dados da caixa de correio diretamente para um arquivo .pst? Use o cmdlet Export-Mailbox. Você pode ainda exportar várias caixas de correio com um só comando. Digite:

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

Você também pode importar arquivos .pst para caixas de correio usando o cmdlet Import-Mailbox. Digite:

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

Deseja ver quais membros de um grupo dinâmico de distribuição têm um filtro personalizado? Basta usar o cmdlet Get-Recipient. Digite:

$DDG = Get-DynamicDistributionGroup "Contoso Marketing Managers"

Get-Recipient -RecipientPreviewFilter $DDG.RecipientFilter

O Shell de Gerenciamento do Exchange é uma calculadora também! Teste-a diretamente na linha de comando:

1.2343+3123 or (23/435)*2

 

Linha de comando 24 horas! Precisa de ajuda? Digite:

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

Você também pode executar pesquisas com caracteres curinga e correspondências de nomes parciais:

Help *UM*

E pode obter mais detalhes sobre um cmdlet usando:

Get-Command <cmdlet-name>

Uma atalho rápido para obter todos os parâmetros de um cmdlet é:

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

ou abreviado.

Gcm <cmdlet-name> | Fl Def*

O caractere de til ( ) deve ser familiar aos usuários do Unix. Ele representa o atalho para o diretório raiz. Para ver como ele é avaliado por padrão, digite:

Dir ~

Você pode usá-lo como um atalho útil:

Cp SomeFile "~\My Documents"

Deseja mover caixas de correio? Digite:

Move-Mailbox

Você pode mover todos os usuários do servidor SRV1 para o servidor SRV2 da seguinte forma:

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

CTRL+C é o equivalente do comando de interrupção automática no Shell de Gerenciamento do Exchange. Se um comando estiver demorando muito tempo para executar ou você desejar cancelar uma operação rapidamente, pressione CTRL+C para interromper a execução.

 

Pushd e Popd funcionam da mesma maneira no Shell de Gerenciamento do Exchange e no cmd.exe. Digite:

Pushd <location>

XML acima de tudo! O Shell de Gerenciamento do Exchange trata o XML como um tipo nativo, de forma que você possa fazer coisas interessantes, como:

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

Esse comando atribui $Sample ao objeto XML real. Para vê-lo, digite:

$Sample

Para navegá-lo, digite:

$Sample.Prop1.Prop2

Não há necessidade de analisar o texto quando você deseja carregar dados XML!

Os cmdlets que terminam em "Config" gerenciam a configuração de singleton, seja por servidor ou organização. Para essas tarefas, você não precisa especificar uma identidade porque há apenas uma instância da configuração. Talvez você tenha de especificar o parâmetro Server se a configuração for por servidor.

Para obter uma lista de todos os usuários em um servidor Exchange 2007 que não são do tipo habilitado para Unificação de Mensagens, use:

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

Para obter uma lista de todos os usuários em um servidor Exchange 2007 que são do tipo habilitado para Unificação de Mensagens, use:

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

Para exibir o alias do usuário formatado em uma tabela junto com o nome do servidor Exchange 2007 e o ramal do usuário, digite:

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

Para exibir a lista dos nomes de servidor de gateway IP de UM que estão desabilitados para chamada de saída e dos grupos de grupo de busca com um servidor de gateway IP de UM, use:

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

Para testar todos os provedores de Lista de Bloqueios de IP, basta canalizar o cmdlet Get-IpBlockListProvider para o cmdlet Test-IpBlockListProvider:

Get-IpBlockListProvider | Test-IpBlockListProvider -IpAddress 192.168.0.1

Antes de remover um objeto usando o verbo Remove, use o parâmetro WhatIf para verificar se os resultados são o que você espera.

Às vezes, é útil converter uma saída do cmdlet em uma cadeia de caracteres para interoperar com cmdlets nativos. Por exemplo, digite:

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

Obtenha todas as informações da WMI do Win32, como contadores perfmon e configurações de computador local. Por exemplo, digite:

Get-WMIObject Win32_PerfRawData_PerfOS_Memory

Cansado de spam? Quem não está? Você pode configurar provedores da lista de bloqueio em tempo real (RBL) com o Shell de Gerenciamento do Exchange executando os dois comandos a seguir:

Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True

e depois

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

Acessar o log de eventos a partir do Shell de Gerenciamento do Exchange. Para recuperar o log de eventos inteiro, execute:

Get-EventLog Application | Format-List

Para recuperar todos os eventos relacionados ao Exchange, execute:

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

Um benefício do Shell de Gerenciamento do Exchange é que os cmdlets podem emitir objetos para o console. Em seguida, você pode manipular essa saída e organizá-la de maneiras interessantes. Por exemplo, para obter uma exibição rápida em formato tabular, use Format-Table:

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

Você esqueceu um nome de propriedade? Não tem problema, pois você pode usar caracteres curinga para recuperar todas as propriedades que corresponderem à parte do nome que você especificar:

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

Deseja trabalhar com dados contidos em um arquivo CSV? Use Import-CSV para atribuir os dados a um objeto. Por exemplo, digite:

$MyCSV = Import-CSV TestFile.CSV

Em seguida, você pode manipular os dados facilmente no Shell de Gerenciamento do Exchange. Por exemplo, se houver uma coluna chamada Mailboxes nos dados CSV, você poderá usar os seguintes comandos para classificar ou agrupar os dados pela coluna Mailboxes:

Para classificar: $MyCSV | Sort Mailboxes

Para agrupar: $MyCSV | Group Mailboxes

Este comando estende-se por todos os servidores de caixa de correio e reconecta todas as caixas de correio exclusivamente identificadas, mas desconectadas, em qualquer um dos armazenamentos de caixa de correio:

Get-ExchangeServer | `

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

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

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

| ForEach { Connect-Mailbox -Identity `

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

A conclusão da tabulação reduz o número de pressionamentos de teclas necessários para concluir um cmdlet. Apenas pressione a tecla TAB para concluir o cmdlet que você está digitando. A conclusão da tabulação é recuada sempre que há um hífen (-) na entrada. Por exemplo:

Get-Send<tab>

deve concluir em Get-SendConnector.. Você pode, até mesmo, usar expressões regulares, como:

Get-U*P*<tab>

Quando pressiona a tecla TAB quando digita este comando, você percorre todos os cmdlets que correspondem à expressão, como os cmdlets da diretiva de Caixa de Correio da Unificação de Mensagens.

Deseja criar um grupo de usuários de teste em seu laboratório? Use este comando:

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

Você deseja alterar as configurações de autenticação em um diretório virtual do Outlook Web Access? Teste o comando a seguir como um exemplo. Ele altera a autenticação, mudando do tipo de autenticação baseada em formulários para a autenticação do Windows:

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

Deseja definir as propriedades em todos ou alguns diretórios virtuais do Outlook Web Access? Canalize a saída de Get-OwaVirtualDirectory para o cmdlet Set-OwaVirtualDirectory.Por exemplo, o comando a seguir define o nível Gzip para todos os diretórios virtuais do Outlook Web Access:

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -GzipLevel High

Deseja remover um dispositivo ActiveSync de uma lista de dispositivos do usuário? Digite:

Remove-ActiveSyncDevice

Este cmdlet pode ser útil na solução de problemas de dispositivos que não sincronizam com êxito com o servidor.

Deseja limpar todos os dados de um dispositivo móvel? Use:

Clear-ActiveSyncDevice

Especifique uma hora do dia para limpar o dispositivo ou deixe a tarefa ser concluída da próxima vez que o dispositivo for conectado ao servidor.

Deseja ver uma lista de todos os dispositivos que sincronizam com a caixa de correio de um usuário? Digite:

Get-ActiveSyncDeviceStatistics

Uma variedade de informações é retornada, incluindo nome do dispositivo, sistema operacional e hora de última sincronização.

Um de seus usuários solicitou que você recuperasse a senha de sincronização do dispositivo móvel dele? Para retornar a senha do usuário, digite:

Get-ActiveSyncDeviceStatistics -ShowRecoveryPassword

Deseja mover o caminho do grupo de armazenamento para outro local? Digite:

Move-StorageGroupPath -LogFolderPath DestLogFolder

Para alterar apenas a definição de caminho sem mover dados, use esse comando com o parâmetro ConfigurationOnly. Este comando é especialmente útil na recuperação de desastre.

Aviso

O mau uso deste cmdlet causará perda de dados.

Deseja mover o caminho do banco de dados para outro local? Digite:

Move-DatabasePath -EdbFilePath DestFileName

Para alterar a definição de caminho de arquivo sem mover os dados, use esse comando com o parâmetro ConfigurationOnly. Esse comando é útil especialmente na recuperação de desastre.

Aviso

O mau uso deste cmdlet causará perda de dados.

Para definir as restrições de discagem em um plano de discagem de Unificação de Mensagens específico, digite:

$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

Você precisa de uma maneira fácil de adicionar um novo endereço SMTP principal a um grupo de caixas de correio? O comando a seguir cria uma nova diretiva de endereço de email que atribui o domínio @contoso.com ao endereço SMTP principal de todas as caixas de correio com Contoso no campo da empresa:

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

Deseja recuperar um grupo de objetos que têm identidades semelhantes? Você pode usar caracteres curinga com o parâmetro Identity para combinar vários objetos. Digite:

Get-Mailbox *John*

Get-ReceiveConnector *toso.com

Get-JournalRule *discovery*

Deseja configurar um grupo de objetos que têm identidades semelhantes? Você pode usar caracteres curinga com o parâmetro Identity quando usar um cmdlet Get e canalizar a saída para um cmdlet Set. Digite:

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

Esse comando combina todas as caixas de correio com o nome "John" na identidade da caixa de correio e define o parâmetro ProhibitSendQuota como 100MB.

A maioria dos cmdlets permite passar a saída de um substantivo para outro para exibir ou modificar objetos relacionados. Por exemplo, você pode desejar definir o limite da caixa de correio em todas as caixas de correio que residem em um banco de dados de caixa de correio específico em um servidor. É possível fazer isso usando este comando:

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

Esse comando recupera todas as caixas de correio que residem no banco de dados de caixa de correio "Executives" e define seu valor ProhibitSendQuota como 300MB.

Esqueceu quais são os parâmetros disponíveis em um cmdlet? Basta usar a conclusão de tabulação! Digite:

Set-Mailbox -<tab>

Ao digitar um hifen ( - ) e pressionar a tecla Tab, você percorrerá todos os parâmetros disponíveis no cmdlet.Deseja restringir sua pesquisa? Digite parte do nome do parâmetro e pressione a tecla Tab. Digite:

Set-Mailbox -Prohibit<tab>

Diga adeus ao ping. Diga olá para Test-MapiConnectivity! Use Test-MapiConnectivity para solucionar problemas de conectividade entre usuários e servidores. Combine Test-MapiConnectivity com vários cmdlets para indicar seu problema específico sem precisar obter manualmente as informações:

Caixas de correio: Get-Mailbox <Mailbox Name> | Test-MapiConnectivity

Bancos de dados de caixa de correio: Get-MailboxDatabase <Database Name> | Test-MapiConnectivity

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

Deseja adicionar um alias a vários grupos de distribuição que têm um nome semelhante? Digite:

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

Este comando adiciona o alias "kim" a todos os grupos de distribuição que contêm a palavra "Exchange".

Deseja gravar exatamente o que ocorre quando você está usando o Shell de Gerenciamento do Exchange? Use o cmdlet Start-Transcript. Tudo o que você fizer depois de executar este cmdlet será gravado em um arquivo de texto que você especificar. Para interromper a gravação da sessão, use o cmdlet Stop-Transcript.

Observe que o cmdlet Start-Transcript sobrescreve o arquivo de texto de destino por padrão. Se você quiser anexar sua sessão a um arquivo existente, use o parâmetro Append:

Start-Transcript c:\MySession.txt -Append

 

Aqui está uma dica prática para repetir um comando um número de vezes específico. Em vez de gravar um loop For, use a seguinte sintaxe:

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

Por exemplo, o comando a seguir cria 10 novos grupos de armazenamento que têm os nomes sg1 a sg10 no servidor TestServer:

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

Você deseja saber quando foi feito backup de seus bancos de dados de caixa de correio pela última vez? Digite:

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

Deseja mover todas as caixas de correio de um banco de dados de caixa de correio para outro? É possível fazer isso facilmente usando o seguinte comando:

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

Você pode até mesmo usar caracteres curinga com o cmdlet Get-MailboxDatabase para consolidar caixas de correio de vários bancos de dados de caixa de correio de origem em um único banco de dados de caixa de correio de destino.

Há um usuário com acesso de rede, mas que mantém uma conta de email externa fora de sua organização do Exchange? Com o Exchange Server 2007, agora você pode criar usuários habilitados para email que sejam contas regulares do Active Directory, mas que também se comportem como contatos habilitados para email. Com o cmdlet Enable-MailUser , você pode adicionar atributos de contato de email a qualquer usuário existente do Active Directory que ainda não tenha uma caixa de correio em um servidor Exchange.Os usuários em sua organização do Exchange poderão enviar mensagens de email para a conta de email externa do mesmo usuário. Digite:

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

Deseja alterar a cota padrão de proibição de envio de um banco de dados de caixa de correio? Digite:

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

Você pode especificar um qualificador de bytes quando usa o parâmetro ProhibitSendQuota. Por exemplo, se desejar definir a cota de proibição de envio para 200 megabytes, digite:

ProhibitSendQuota 200MB

Você também pode configurar os parâmetros IssueWarningQuota e ProhibitSendReceiveQuota da mesma maneira.

Deseja saber que versão do Exchange Server cada um de seus servidores está executando? Digite:

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

Deseja saber quais servidores Exchange 2007 ainda não foram configurados com uma chave de produto válida e se o período de teste deles expirou? Digite:

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

Deseja determinar se um servidor está executando o Exchange Server 2007 Standard Edition ou o Exchange Server 2007 Enterprise Edition? Digite:

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

Para ver qual edição todos os seus servidores Exchange estão executando, omita o parâmetro <Server Name>.

Deseja criar uma nova caixa de correio de recursos que possa ser usada para reservar uma sala de reunião? Digite:

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

Este comando cria um usuário desabilitado do Active Directory que possui uma caixa de correio que aceita solicitações de reunião de usuários.

Deseja adicionar um aviso de isenção a todas as mensagens de email de saída? Digite:

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

Deseja controlar as propriedades de mensagens de email enviadas a um domínio específico? Use os cmdlets RemoteDomain. Crie um novo domínio remoto usando o cmdlet New-RemoteDomain . Digite:

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

Em seguida, modifique as propriedades desejadas para esse domínio remoto usando o cmdlet Set-RemoteDomain:

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

Você pode controlar quais recursos estão disponíveis para usuários do Outlook Web Access usando o cmdlet Set-OwaVirtualDirectory. Digite:

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

Booleanos são os parâmetros que podem ser avaliados como $True ou $False. Os booleanos geralmente são usados como um sinalizador em um objeto que modifica o comportamento do mesmo objeto. No Shell de Gerenciamento do Exchange, você deve fornecer um parâmetro booleano com $True, $False, 1 ou 0. Nenhum outro valor é aceito, incluindo True ou False. Por exemplo, os comandos a seguir definem o parâmetro ExternalDsnSendHtml como $True:

Set-TransportServer <Server Name> -ExternalDsnSendHtml $True

Set-TransportServer <Server Name> -ExternalDsnSendHtml 1

Deseja remover todas as mensagens de email que foram enviadas de um determinado nome de domínio das filas de um servidor sem gerar uma notificação de falha na entrega? Digite:

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

Deseja obter uma maneira fácil de aplicar limites de retenção de item excluído por vários bancos de dados e servidores? Tente o seguinte comando para configurar a retenção de item excluído por todos os bancos de dados em um servidor especificado:

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

Você também pode aplicar os mesmos limites de retenção de item excluído ou os limites de retenção de caixa de correio por todos os servidores em sua organização:

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

Deseja saber quais permissões uma conta de usuário do Active Directory tem em uma caixa de correio específica? Use:

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

Deseja saber para quais caixas de correio um usuário específico do Active Directory tem permissões? Digite:

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

Cuidado: Este comando enumera todas as caixas de correio de sua organização. Se houver uma grande quantidade de caixas de correio, talvez você deseje se concentrar em caixas de correio específicas.

Deseja obter uma lista do status de backup de todos os bancos de dados de caixa de correio em sua organização? Digite:

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

O que você acha de restringir a apenas as caixas de correio em um servidor específico? Digite:

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

Para recuperar o status atual de um servidor Exchange ou banco de dados, use o parâmetro Status. Por exemplo:

Get-ExchangeServer -Status | Format-List

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

Deseja exibir o status de montagem de todos os bancos de dados de caixa de correio? Digite:

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

Qual é a diferença entre filtragem de servidor e filtragem de cliente? A filtragem do servidor é usada com os cmdlets de destinatário e de fila, que aceitam o parâmetro Filter, visto que esses cmdlets podem retornar conjuntos de resultados grandes. O servidor filtra os resultados usando os critérios que você especificar e, em seguida, envia os resultados filtrados. A filtragem de cliente pode ser usada com qualquer cmdlet. O conjunto de resultados inteiro é enviado para o computador cliente, que filtra os dados e fornece um conjunto de resultados filtrado. A filtragem do cliente usa o cmdlet Where-Object, que pode ser reduzido a Where.

Com a Unificação de Mensagens (UM) do Exchange Server 2007, você pode redirecionar para um operador os chamadores não autenticados que ligam para determinados ramais telefônicos, em vez de direcioná-los para o ramal que foi discado. Para listar usuários para os quais a UM não transfere chamadores não autenticados, transferindo-os para o operador, digite:

Get-UMMailbox | `

Where-Object { $_.AllowUMCallsFromNonUsers -eq `

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

Você pode usar filtragem de cliente para retornar apenas os dados que deseja ver ou com os quais deseja trabalhar.O exemplo a seguir recupera todas as contas de usuário do Active Directory que estão no departamento de Engineering (Engenharia) e coloca os resultados em uma tabela com duas colunas, Name e Department. Ao usar o parâmetro ResultSize, o cmdlet Get-User limita o conjunto de resultados a 2.000 usuários.

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

A variável especial $_ representa os objetos que estão sendo passados de um cmdlet para outro no pipeline. A variável $_ é inicializada automaticamente pelo shell e ligada ao objeto de pipeline atual. Você pode acessar as propriedades do objeto atribuídas à variável $_ como faria com qualquer outro objeto. O exemplo a seguir mostra como você pode exibir a propriedade Name de cada objeto de caixa de correio que é passado pelo:

Get-Mailbox | ForEach { $_.Name }

Você pode importar arquivos CSV e tratá-los como objetos usando o cmdlet Import-Csv. Cada linha em um arquivo CSV torna-se um elemento em uma matriz e cada coluna torna-se uma propriedade. Você pode atribuir o arquivo CSV a uma variável ou pode canalizar seu conteúdo diretamente para outro cmdlet. No exemplo a seguir, existem três colunas no arquivo CSV, Name, Alias e EmailAddress, com várias linhas que o cmdlet ForEach percorrerá.Os dados em cada linha são usados para criar um novo contato de email.

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

Deseja personalizar o perfil do Shell de Gerenciamento do Exchange? Execute o seguinte comando para determinar que o local do arquivo Microsoft.PowerShell_profile.ps1 é:

$Profile

Você pode ter de criar a pasta PSConfiguration e o arquivo Microsoft.PowerShell_profile.ps1. Depois que tiver feito isso, você poderá adicionar suas funções e seus alias favoritos, que serão carregados sempre que o Shell de Gerenciamento do Exchange for aberto.

Use os comandos a seguir para configurar uma diretiva de pasta gerenciada que forçará um tamanho máximo de pasta de email pessoal de 10MB em todas as caixas de correio de sua organização.

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"

Deseja ver tudo o que ocorre quando você executa um comando? Inclua o parâmetro Verbose no comando. Esse parâmetro instrui o Shell de Gerenciamento do Exchange a exibir informações detalhadas sobre cada ação que o servidor tomar para concluir o comando. Essas informações podem ser úteis na solução de problemas.

Qualquer cmdlet que aceita um valor de tamanho permite especificar se o valor inteiro está em quilobytes (KB), megabytes (MB), gigabytes (GB) ou terabytes (TB). Por exemplo:

Set-Mailbox "Kim Akers" -ProhibitSendQuota 200MB

O Shell de Gerenciamento do Exchange pode registrar todos os comandos relacionados ao Exchange que modifiquem objetos de alguma forma. A atividade de comando relacionada ao Exchange é registrada no log de eventos do PowerShell. Para habilitar o registro de comandos relacionados ao Exchange, execute o seguinte comando:

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