Arquivos da Categoria: Powershell
Exchange Online: Adicionando vários usuários a um Grupo de Distribuição (CSV)
Olá pessoal,
É muito comum no ambientes corporativos que utilizam Exchange (On-Premise ou Online) a criação de Grupos de Distribuição, porém a adição de vários usuários no Exchange Online através de um processo manual pode ser trabalhoso.
Como tive a necessidade de adicionar vários usuários a uma lista de distribuição em um de meus projetos irei compartilhar com vocês este procedimento que pode ser de grande ajuda.
Vamos lá:
1 – Conectar no Tenant do Office 365:
$livecred = Get-Credential
Connect-MsolService -Credential $livecred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
2 – Criar um arquivo CSV com os seguintes campos:
Alias,EmailAddresses
diogo.heringer,diogo.heringer@cloudspecialists.com.br
3 – Executar os seguintes comandos:
$MembersList = Import-CSV C:\Diogo\Listas\MemberList.csv (Executa a importação do CSV)
$Memberslist | foreach{Add-DistributionGroupMember -Identity “Grupo1″ -Member $_.alias}
4 – Notem que o comando so utiliza o Alias para sua execução, entretanto você pode ter problemas ao criar o CSV com apenas uma linha, caso não queria preencher o campo EmailAdrresses do arquivo CSV basta preencher o ALIAS seguido de “,”, por exemplo: “diogo.heringer,”.
5 – Pronto! Agora todos os usuários cadastrados no CSV serão inseridos automaticamente dentro do Grupo de Distribuição desejado.
Diogo Heringer
Exchange Online: Listando usuários e suas respectivas licenças
Olá pessoal,
Um dos grandes desafios na administração do Office 365 é a gerencia das licenças. Através do Portal temos gerencia apenas da quantidade de licenças e dos planos disponíveis. Para verificar a licença que o usuário utiliza devemos fazer isso de forma manual através do Portal, porém em um cenário com MUITOS usuários é inviável que esta verificação seja feita.
Para gerarmos este relatório vamos seguir os seguintes passos:
1 – Conectar no Tenant do Office 365:
$livecred = Get-Credential
Connect-MsolService -Credential $livecred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
2 – Executar o seguinte comando:
Get-MsolUser | Ft displayname,Licenses > c:\Diogo\Licenças.txt
3 – Após executar este comando você terá a informação de Licenças no seguinte formato:
| DisplayName | License |
| Diogo Heringer |
{nomedotenant:STANDARDPACK} |
Como saber qual “Pack” equivale a cada plano do Office 365?
Segue a lista para que possamos fazer a conversão:
K1 – DESKLESSPACK
SHAREPOINTDESKLESS
EXCHANGE_S_DESKLESS
K2 – DESKLESSWOFFPACK
SHAREPOINTWAC
SHAREPOINTDESKLESS
EXCHANGE_S_DESKLESS
P1 – LITEPACK
MCOLITE
SHAREPOINTLITE
EXCHANGE_L_STANDARD
E1 – STANDARDPACK
MCOSTANDARD
SHAREPOINTSTANDARD
EXCHANGE_S_STANDARD
E3 – ENTERPRISEPACK
OFFICESUBSCRIPTION
MCOSTANDARD
SHAREPOINTWAC
SHAREPOINTENTERPRISE
EXCHANGE_S_ENTERPRISE
E4 – ENTERPRISEWITHSCAL
OFFICESUBSCRIPTION
MCOSTANDARD
SHAREPOINTWAC
SHAREPOINTENTERPRISE
EXCHANGE_S_ENTERPRISE
4 – Pronto! Agora com estas informações conseguimos saber qual usuário possui o plano E1, E2 dentro outros planos!
Até a próxima,
Diogo Heringer
Exchange Online: Criando Forwards à partir de um arquivo .CSV
Olá pessoal,
Recentemente em uma migração IMAP de Google Apps para Office 365, surgiu a necessidade de transferir todas as regras de encaminhamento do Google Apps para o Office 365. Quando trabalhamos com muitas regras é inviável executar a criação de cada regra de forma manual.
Para isso criei um Script onde ele irá ler um arquivo de resposta (.CSV) e irá fazer os encaminhamentos correspondentes. Lembrando que o Exchange Online suport fazer o encaminhamento para apenas um destinatário, podendo ser Mailbox, Lista de Distribuição ou Contato.
Vamos ao passo a passo:
1 – Criar o arquivo CSV com os seguintes dados:
2 – Conectar no Tenant do Office 365:
$livecred = Get-Credential
Connect-MsolService -Credential $livecred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
3 – Executar os seguintes comandos:
$Users = Import-CSV C:\Diogo\Usuarios1.csv
$Users | foreach {Set-Mailbox -Identity $_.Identity -ForwardingAddress $_.ForwardingAddress}
4 – Pronto! Com o script executado, ele irá criar todos os Forwards de acordo com o arquivo CSV, sendo o “Identity” a Mailbox onde será aplicado o Encaminhamento, e “ForwardingAddress” o endereço para o qual os e-mails serão encaminhados.
Até a próxima,
Diogo Heringer
Exchange 2010 Outlook Anywhere: Configurando Certificado Wildcard
Olá pessoal,
Ao utilizar o Remote Connectivity Analyzer (www.testexchangeconnectivity.com) para testar o Outlook Anywhere para uma migração Cutover de Exchange Server, se o certificado do Exchange Server for Wildcard é normal que aconteça o seguinte erro:
Este erro acontece porque o RCA (Remote Connectivity Analyzer) está tentando se conectar na URL do Outlook Anywhere (msstd:mail.empresa.com.br), porém o CN do Certificado é “*.empresa.com.br”.
Para resolvermos este problema devemos definir que o OutlookProvider do Exchange Server para o endereço “*.empresa.com.br”.
Segue os passos da correção do problema:
1 – No EMS (Exchange Management Shell) executar o comando “Get-OutlookProvider”:
Notem que o CertPrincipalName está vazio ou nulo.
2 – Executar o comando abaixo para definir o CertPrincipalName do Outlook Anywhere:
Set-OutlookProvider -Identity EXPR -CertPrincipalName msstd:*.domain.com.br
3 – Pronto, agora o Outlok Anywhere funcionará normalmente com certificado Wildcard. Interessante verificar novamente através do RCA (Remote Connectivity Analyzer).
Até a próxima,
Diogo Heringer
Exchange Online: Configurando Forwards/Encaminhamentos

Olá pessoal,
Uma das tarefas comuns de administração do Exchange Server é a configuração de encaminhamentos de e-mail em nossos Mailbox. O encaminhamento de e-mail pode ser feito pelo próprio usuário através da sua console de OWA. No entanto muitas vezes os administradores precisam fazer estes encaminhamentos, e através da console do ECP (Exchange Control Panel) não é possível.
Primeiramente vamos conectar no tenant do Office 365:
$livecred = Get-Credential
Connect-MsolService -Credential $livecred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUrihttps://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
Agora vamos entender todos os tipos de encaminhamentos e como fazer:
1 – Encaminhar e-mail para um Usuário Interno e salvar uma cópia na Mailbox configurada.
- Set-Mailbox <Mailbox> -ForwardingAddress <Office 365 User Email Address>
2 – Encaminhar e-mail para um usuário interno e NÃO SALVAR uma cópia na Mailbox configurada.
- Set-Mailbox -Identity <Mailbox> -ForwardingAddress <Office 365 User Email Address> -DeliverToMailboxAndForward $false
3 – Encaminhar e-mail para um Usuário Externo e salvar uma cópia na Mailbox configurada.
- Set-Mailbox -Identity <Mailbox> -ForwardingsmtpAddress <External Recipient Email Address>
4 – Encaminhar e-mail para um Usuário Externo e NÃO SALVAR uma cópia na Mailbox configurada.
- Set-Mailbox <Mailbox> -ForwardingsmtpAddress <External Recipient Email Address > -DeliverToMailboxAndForward $false
Com isto podemos fazer vários tipos de encaminhamentos diferentes de acordo com a nossa necessidade. Esta tarefa pode ser simples mas é muito útil para administração.
Até a próxima,
Diogo Heringer
Step-by-Step: Instalação Exchange Server 2013
Olá pessoal,
Neste artigo vamos aprender a fazer a Instalação do Exchange Server 2013 (CAS E MB) em um único servidor. São necessários alguns pré-requisitos que também serão mostrados e é de extrema importância também validar o ambiente de Active Directory antes da instalação do mesmo. Vamos la:
Pré Requisitos – Active Directory

Pré Requisitos – S.O
Pré Requisitos – Clients Suportados
-
Outlook 2013 Preview
-
Outlook 2010 SP1 with April 2012 Cumulative Update
-
Outlook 2007 SP3 with July 2012 Cumulative Update
-
Entourage 2008 for Mac, Web Services Edition
-
Outlook for Mac 2011
Instalação do Exchange Server 2013
1 – Instale os Pré-Requisitos do Exchange Server 2013 de acordo com seu S.O:
-
Abrir o Windows PowerShell no servidor que será instalado o Exchange Server 2013
-
Install-WindowsFeature RSAT-ADDS
-
Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation
-
Instalar o Microsoft Office 2010 Filter Pack 64 bit
-
Instalar o Microsoft Office 2010 Filter Pack SP1 64 bit
Após a instalação dos pré-requisitos do Exchange Server 2013 Preview é necessário a desinstalação do Microsoft Visual C++ 11 Beta Redistributable (x64). Para isso vamos seguir os seguintes passos:
- Navegar até Control Panel > Programs and Features.
- Selecionar Visual C++ 11 Beta Redistributable (x64) – 11.0.50531 e clicar em “Uninstall”
- Quando o Microsoft Visual C++ 11 Beta for desinstalado, clicar em “Close”.
- Abrir o Windows PowerShell no servidor que será instalado o Exchange Server 2013
- Import-Module ServerManager
- Add-WindowsFeature Desktop-Experience, NET-Framework, NET-HTTP-Activation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Web-Server, WAS-Process-Model, Web-Asp-Net, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI
- Instalar o Microsoft .NET Framework 4.5 RC
- Instalar o Windows Management Framework 3.0
- Instalar o Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit
- Instalar o Microsoft Office 2010 Filter Pack 64 bit
- Instalar o Microsoft Office 2010 Filter Pack SP1 64 bit
- Instalar o Microsoft Knowledge Base article KB974405 (Windows Identity Foundation)
- Instalar o Knowledge Base article KB2619234 (Enable the Association Cookie/GUID that is used by RPC over HTTP to also be used at the RPC layer in Windows 7 and in Windows Server 2008 R2)
- Instalar o Knowledge Base article KB2533623 (Insecure library loading could allow remote code execution)
Após a instalação dos pré-requisitos do Exchange Server 2013 Preview é necessário a desinstalação do Microsoft Visual C++ 11 Beta Redistributable (x64). Para isso vamos seguir os seguintes passos:
- Navegar até Control Panel > Programs and Features.
- Selecionar Visual C++ 11 Beta Redistributable (x64) – 11.0.50531 e clicar em “Uninstall”
- Quando o Microsoft Visual C++ 11 Beta for desinstalado, clicar em “Close”.
Com todos os pré-requisitos instalados vamos agora a instalação do Exchange Server 2013:
1 – Após o rodar o arquivo executável Setup.exe, na tela de Introdução vamos clicar em “Next”:
2 – Aceitar os Termos de Contrato e clicar em “Next”:
3 – Na tela de envio de informações a Microsoft, vamos marcar “No”, pois é um ambiente de teste. Clicar em “Next”:
4 – Na tela de Checagem de Software vamos clicar em “Next”:
5 – Em “Server Selection Role” vamos marcar os Checkbox referentes ao “CAS” e “MB”. Selecionar também o Checkbox referente a instalação dos pré-requisitos de Roles and Features, embora eles já tenham sido instalados se existir algum erro na instalação das Roles e Features ele irá corrigir automaticamente.
Clicar em “Next”
6 – Manter o local de instalação padrão do Exchange e clicar em “Next”:
7 – Em “Exchange Organization” vamos inserir o nome da Organização Exchange e clicar em “Next”:
8 – Desabilitar o “Scanner de Malware” e clicar em “Next”:
9 – Inserir a URL Externa do CAS (Client Access Server) e clicar em “Next”:
10 – Em “Improvement Program” vamos marcar “No” e clicar em “Next”:
11 – Aguardar a conclusão do “Readiness Checks”:
12 – Aguardar a instalação ser concluída com sucesso:
13 – A instalação foi concluída com sucesso!
Pronto? Ainda não! O Exchange Server 2013 não possui mais o Exchange Management Console (EMC), agora gerenciamos nosso servidor através do EAC (Exchange Admin Center) e o EMS (Exchange Management Shell) foi mantido.
Para acessar o servidor basta abrirmos um Browser e digitar a URL:
Os CMDLEST disponíveis para gerenciamento do Exchange Server 2013 através do EMS (Exchange Management Shell) são:
Add-GlobalMonitoringOverride
Add-ResubmitRequest
Add-ServerMonitoringOverride
Clear-MobileDevice
Complete-MigrationBatch
Disable-App
Disable-MailboxQuarantine
Disable-UMCallAnsweringRule
Dump-ProvisioningCache
Enable-App
Enable-MailboxQuarantine
Enable-UMCallAnsweringRule
Export-DlpPolicyCollection
Export-MigrationReport
Get-ActiveSyncDeviceAutoblockThreshold
Get-App
Get-AuthConfig
Get-AuthServer
Get-CalendarDiagnosticAnalysis
Get-ClassificationRuleCollection
Get-DataClassification
Get-DlpPolicy
Get-DlpPolicyTemplate
Get-ExchangeServerAccessLicense
Get-ExchangeServerAccessLicenseUser
Get-FrontendTransportServer
Get-FrontendTransportService
Get-GlobalMonitoringOverride
Get-HealthReport
Get-InterceptorRule
Get-MailboxSearch
Get-MailboxTransportService
Get-MalwareFilteringServer
Get-MalwareFilterPolicy
Get-MalwareFilterRecoveryItem
Get-MigrationBatch
Get-MigrationConfig
Get-MigrationEndpoint
Get-MigrationStatistics
Get-MigrationUser
Get-MigrationUserStatistics
Get-MobileDevice
Get-MobileDeviceMailboxPolicy
Get-MobileDeviceStatistics
Get-MonitoringItemHelp
Get-MonitoringItemIdentity
Get-Notification
Get-PartnerApplication
Get-PendingFederatedDomain
Get-PolicyTipConfig
Get-PublicFolderMailboxDiagnostics
Get-PublicFolderMigrationRequest
Get-PublicFolderMigrationRequestStatistics
Get-PublicFolderMoveRequest
Get-PublicFolderMoveRequestStatistics
Get-QueueDigest
Get-ResourcePolicy
Get-ResubmitRequest
Get-ServerComponentState
Get-ServerHealth
Get-ServerMonitoringOverride
Get-SiteMailbox
Get-SiteMailboxDiagnostics
Get-SiteMailboxProvisioningPolicy
Get-TeamMailbox
Get-TeamMailboxDiagnostics
Get-TeamMailboxProvisioningPolicy
Get-TransportService
Get-UMCallAnsweringRule
Get-UMCallRouterSettings
Get-UMMailboxConfiguration
Get-UMPhoneSession
Get-UserPhoto
Get-WorkloadManagementPolicy
Get-WorkloadPolicy
Import-DlpPolicyCollection
Import-DlpPolicyTemplate
Invoke-MonitoringProbe
New-App
New-AuthServer
New-ClassificationRuleCollection
New-DlpPolicy
New-InterceptorRule
New-MailboxSearch
New-MalwareFilterPolicy
New-MigrationBatch
New-MigrationEndpoint
New-MobileDeviceMailboxPolicy
New-PartnerApplication
New-PolicyTipConfig
New-PowerShellVirtualDirectory
New-PublicFolderMigrationRequest
New-PublicFolderMoveRequest
New-ResourcePolicy
New-SiteMailbox
New-SiteMailboxProvisioningPolicy
New-TeamMailbox
New-TeamMailboxProvisioningPolicy
New-UMCallAnsweringRule
New-WorkloadManagementPolicy
New-WorkloadPolicy
Até a próxima,
Diogo Heringer
Hybrid Configuration: Script para migração automatizada de usuários específicos
Olá pessoal,
Após a configuração do ambiente híbrido completada com sucesso surge a necessidade fazer a migração de Mailbox do ambiente On-Premise para o ambiente Online. Esta migração pode ser feita através do EMC (Exchange Management Console), porém quando é feito desta forma (Padrão) não existe uma automação das Mailbox na hora da migração, ou seja, você deverá escolher todos os Mailbox a serem migrados um a um e em seguida efetuar o Move-Request. Para suprir esta necessidade criei juntamente com o apoio do Carlos Eduardo Travagini, que não só fez boa parte do Script mas também validou o funcionamento do mesmo e agora vamos compartilhar com vocês.
O que o Script faz?
O script abaixo tem como objetivo:
- Atribuir a localidade dos usuários descritos no arquivo .CSV
- Atribuir licenças aos usuários descritos no arquivo .CSV
- Definir uma senha para os usuários descritos no .CSV
- Definir que senha nunca expira para os usuários descritos no .CSV
- Fazer a migração dos usuários descritos no .CSV
1 – Antes de começar é importante termos alguns dados em mãos, e para isso vamos conectar no tenant e executar o comando “Get-MsolAccountSku”
- $livecred = Get-Credential
- Connect-MsolService -Credential $livecred
- $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/-Credential $LiveCred -Authentication Basic -AllowRedirection
- Import-PSSession $Session
- Get-MsolSkuAccount
Guardar os dados da coluna “AccountSkuID” referente ao tenant que deseja atribuir a licenças, pois eles serão usados no Script.
Para facilitar a inserção dos dados referentes aos planos no Script segue a lista de variáveis a serem usadas no Script de acordo com o seu Plano de Office 365:
K1 – DESKLESSPACK
SHAREPOINTDESKLESS
EXCHANGE_S_DESKLESS
K2 – DESKLESSWOFFPACK
SHAREPOINTWAC
SHAREPOINTDESKLESS
EXCHANGE_S_DESKLESS
P1 – LITEPACK
MCOLITE
SHAREPOINTLITE
EXCHANGE_L_STANDARD
E1 – STANDARDPACK
MCOSTANDARD
SHAREPOINTSTANDARD
EXCHANGE_S_STANDARD
E3 – ENTERPRISEPACK
OFFICESUBSCRIPTION
MCOSTANDARD
SHAREPOINTWAC
SHAREPOINTENTERPRISE
EXCHANGE_S_ENTERPRISE
E4 – ENTERPRISEWITHSCAL
OFFICESUBSCRIPTION
MCOSTANDARD
SHAREPOINTWAC
SHAREPOINTENTERPRISE
EXCHANGE_S_ENTERPRISE
O formato de arquivo .CSV que será utilizado é:
Com estes dados em mãos basta editar o Script abaixo, salvá-lo como .PS1 e executar no Office365 Shell:
$cred = $Host.UI.PromptForCredential(“Empresa XXXX – Migracao”, “Informe o usuário e senha da administracao no Office365.”,”",”userCreds”)
Connect-MsolService -Credential $cred
$ServicePlans = Get-MsolAccountSku | Where {$_.SkuPartNumber -eq “EXCHANGESTANDARD”}
$MyO365Sku = New-MsolLicenseOptions -AccountSkuId empresa:EXCHANGESTANDARD -DisabledPlans EXCHANGE_S_STANDARD
$Usuarios=Import-Csv C:\migracao.csv
$Usuarios | foreach {Set-MsolUser -UserPrincipalName $_.UserPrincipalName -UsageLocation BR}
$Usuarios | foreach {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses empresa:EXCHANGESTANDARD -LicenseOptions $MyO365Sku}
$Usuarios | foreach {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword}
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $cred
-Authentication Basic -AllowRedirection
Import-PSSession $Session
$CredMigracao = $Host.UI.PromptForCredential(“Empresa XXXX – Migracao”, “Informe o usuário e senha da administracao do Microsoft Exchange 2010.”,”",”userCreds”)
$Usuarios=Import-Csv C:\migracao.csv
$Usuarios | foreach {New-MoveRequest -Remote -RemoteHostName ‘UrldoCAS.com.br’ -RemoteCredential $CredMigracao -TargetDeliveryDomain ‘DominiodeRoteamento.mail.onmicrosoft.com’ -Identity $_.UserPrincipalName}
Agora basta executar o Script e todas as Mailbox que estão presentes no arquivo .CSV serão migradas para o Office 365.
Até a próxima,
Diogo Heringer
Exchange Online: Importar contatos através de um CSV

Olá pessoal,
A pedido do Thiago Mateus (Geneses IT Consulting) vamos aprender no tutorial abaixo como fazer a importação de contatos externos ã partir de um arquivo .CSV no Exchange Online. Esta dúvida já foi me questionada algumas outras vezes e por isso resolvi postar e mostrar como esta importação deve ser feita:
1 – Conectar no Tenant do Office 365 através do PowerShell:
- $livecred = Get-Credential
- Connect-MsolService -Credential $livecred
- $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
- Import-PSSession $Session
2 – Criar o arquivo CSV no formato: name,externalemailaddress
3 – Utilizar o seguinte comando no PowerShell para realizar a importação:
Import-Csv c:\o365\externalcontact.csv | foreach-object {new-mailcontact -externalemailaddress $_.externalemailaddress -name $_.name }
4 – Pronto! Com isso podemos importar todos os contatos que desejarmos através de um arquivo CSV.
Até a próxima,
Diogo Heringer


