Por que você precisa usar o PowerShell para Microsoft 365
Esse artigo se aplica ao Microsoft 365 Enterprise e ao Office 365 Enterprise.
Com o Centro de administração do Microsoft 365, você pode gerenciar suas contas e licenças de usuário do Microsoft 365. Você também pode gerenciar seus serviços do Microsoft 365, como Exchange Online, Teams e SharePoint Online. Se você usar o PowerShell para gerenciar esses serviços, poderá aproveitar o ambiente de linguagem de script e linha de comando para velocidade, automação e recursos adicionais.
Este artigo mostra como usar o PowerShell para gerenciar o Microsoft 365 para:
Revelar informações adicionais que você não pode ver no Centro de administração do Microsoft 365
Configurar recursos e configurações só é possível com o PowerShell
Fazer operações em massa
Filtrar dados
Imprimir ou salvar dados
Gerenciar entre serviços
Lembre-se de que o PowerShell para Microsoft 365 é um conjunto de módulos para Windows PowerShell, que é um ambiente de linha de comando para serviços e plataformas baseados no Windows. Esse ambiente cria uma linguagem de shell de comando que pode ser estendida com módulos adicionais. Ele fornece uma maneira de executar comandos ou scripts simples ou complexos. Por exemplo, depois de instalar o PowerShell para módulos do Microsoft 365 e se conectar à sua assinatura do Microsoft 365, você poderá executar o seguinte comando para listar todas as caixas de correio do usuário para Microsoft Exchange Online:
Get-Mailbox
Você também pode obter a lista de caixas de correio usando o Centro de administração do Microsoft 365 mas contar os itens em todas as listas para todos os sites para todos os seus aplicativos Web não é fácil.
O PowerShell para Microsoft 365 foi projetado para ajudá-lo a gerenciar o Microsoft 365, não para substituir o Centro de administração do Microsoft 365. Os administradores precisam ser capazes de usar o PowerShell para o Microsoft 365 porque há alguns procedimentos de configuração que só podem ser feitos por meio do PowerShell para comandos do Microsoft 365. Para esses casos, você precisa saber como:
Instale os módulos do PowerShell para Microsoft 365 (feito apenas uma vez para cada computador administrador).
Conecte-se à sua assinatura do Microsoft 365 (uma vez para cada sessão do PowerShell).
Colete as informações necessárias para executar o PowerShell necessário para os comandos do Microsoft 365.
Execute o PowerShell para comandos do Microsoft 365.
Depois de aprender essas habilidades básicas, você não precisará listar seus usuários de caixa de correio usando o comando Get-Mailbox . Você também não precisa entender como criar um novo comando como o comando citado anteriormente para contar todos os itens em todas as listas para todos os sites de todos os seus aplicativos Web. A Microsoft e a comunidade de administradores podem ajudá-lo com tarefas como necessárias.
O PowerShell para Microsoft 365 pode revelar informações que você não pode ver com o Centro de administração do Microsoft 365
O Centro de administração do Microsoft 365 exibe muitas informações úteis. Mas não exibe todas as informações possíveis que o Microsoft 365 armazena sobre usuários, licenças, caixas de correio e sites. Aqui está um exemplo para usuários e grupos no Centro de administração do Microsoft 365:
Essa exibição fornece as informações de que você precisa em muitos casos. No entanto, há momentos em que você precisa de mais. Por exemplo, o licenciamento do Microsoft 365 (e os recursos do Microsoft 365 disponíveis para um usuário) dependem, em parte, da localização geográfica do usuário. As políticas e os recursos que você pode estender a um usuário que mora no Estados Unidos podem não ser os mesmos que podem ser estendidos a um usuário na Índia ou na Bélgica. Siga estas etapas no Centro de administração do Microsoft 365 para determinar a localização geográfica de um usuário:
Clique duas vezes no Nome de exibição do usuário.
No painel de exibição de propriedades do usuário, selecione detalhes.
Na exibição de detalhes, selecione detalhes adicionais.
Role até encontrar o título País ou região:
Escreva o nome de exibição e localização do usuário em um pedaço de papel ou copie e cole no Bloco de notas.
Você deve repetir este procedimento para cada usuário. Se você tiver muitos usuários, esse processo pode ser entediante. Com o PowerShell para Microsoft 365, você pode exibir essas informações para todos os usuários usando o seguinte comando:
Get-AzureADUser | Select DisplayName, UsageLocation
Observação
O PowerShell Core não dá suporte ao módulo Microsoft Azure Active Directory para Windows PowerShell módulo e cmdlets que têm o Msol em seu nome. Você precisa executar esses cmdlets de Windows PowerShell.
Aqui está um exemplo dos resultados:
DisplayName UsageLocation
----------- -------------
Bonnie Kearney GB
Fabrice Canel BR
Brian Johnson (TAILSPIN) US
Anne Wallace US
Alex Darrow US
David Longmuir BR
A interpretação deste comando do PowerShell é: Obtenha todos os usuários na assinatura atual do Microsoft 365 (Get-AzureADUser), mas exiba apenas o nome e o local para cada usuário (Selecione DisplayName, UseLocation).
Como o PowerShell para Microsoft 365 dá suporte a uma linguagem de shell de comando, você pode manipular ainda mais as informações obtidas pelo comando Get-AzureADUser . Por exemplo, talvez você queira classificar esses usuários por sua localização, agrupando todos os usuários brasileiros, todos os usuários Estados Unidos juntos e assim por diante. Aqui está o comando:
Get-AzureADUser | Select DisplayName, UsageLocation | Sort UsageLocation, DisplayName
Aqui está um exemplo dos resultados:
DisplayName UsageLocation
----------- -------------
David Longmuir BR
Fabrice Canel BR
Bonnie Kearney GB
Alex Darrow US
Anne Wallace US
Brian Johnson (TAILSPIN) US
A interpretação deste comando do PowerShell é: Obtenha todos os usuários na assinatura atual do Microsoft 365, mas exiba apenas o nome e o local para cada usuário e classifique-os primeiro pela localização e, em seguida, seu nome (Sort UseLocation, DisplayName).
Você também pode usar filtragem adicional. Por exemplo, se você quiser ver informações sobre usuários baseados no Brasil, use este comando:
Get-AzureADUser | Where {$_.UsageLocation -eq "BR"} | Select DisplayName, UsageLocation
Aqui está um exemplo dos resultados:
DisplayName UsageLocation
----------- -------------
David Longmuir BR
Fabrice Canel BR
A interpretação deste comando do PowerShell é: Obter todos os usuários na assinatura atual do Microsoft 365 cuja localização é o Brasil (Onde {$_. UseLocation -eq "BR"}) e, em seguida, exiba o nome e o local para cada usuário.
Uma nota sobre domínios grandes
Se você tiver um domínio grande com dezenas de milhares de usuários, tentar alguns dos exemplos que mostramos neste artigo poderá levar à limitação. Com base em fatores como poder de computação e largura de banda de rede disponível, você pode estar tentando fazer muito ao mesmo tempo. Grandes organizações podem querer dividir algumas dessas operações do PowerShell em dois comandos.
Por exemplo, o comando a seguir retorna todas as contas de usuário e mostra o nome e o local para cada um:
Get-AzureADUser | Select DisplayName, UsageLocation
Isso funciona bem com domínios menores. Mas em uma organização grande, talvez você queira dividir essa operação em dois comandos: um comando para armazenar as informações da conta de usuário em uma variável e outro para exibir as informações necessárias. Veja um exemplo:
$x = Get-AzureADUser
$x | Select DisplayName, UsageLocation
A interpretação deste conjunto de comandos do PowerShell é:
- Obtenha todos os usuários na assinatura atual do Microsoft 365 e armazene as informações em uma variável chamada $x ($x = Get-AzureADUser).
- Exiba o conteúdo da variável $x, mas inclua apenas o nome e o local para cada usuário ($x | Selecione DisplayName, UseLocation).
O Microsoft 365 tem recursos que você só pode configurar com o PowerShell para o Microsoft 365
O Centro de administração do Microsoft 365 destina-se a fornecer acesso a tarefas administrativas comuns e úteis que se aplicam à maioria dos ambientes. Em outras palavras, o Centro de administração do Microsoft 365 foi projetado para que o administrador típico possa executar as tarefas de gerenciamento mais comuns. Mas há algumas tarefas que não podem ser feitas no centro de administração.
Por exemplo, o centro de administração do Skype for Business Online fornece algumas opções para criar convites de reunião personalizados:
Com essas configurações, você pode adicionar um toque de personalização e profissionalismo a convites de reunião. Mas há mais em configurações de configuração de reunião do que simplesmente criar convites de reunião personalizados. Por exemplo, por padrão, as reuniões permitem:
Usuários anônimos obterem entrada automática para cada reunião.
Participantes gravem a reunião.
Todos os usuários da sua organização serem designado como apresentadores quando eles entrarem na reunião.
Essas configurações não estão disponíveis no centro de administração do Skype for Business Online. Você pode controlá-los do PowerShell para o Microsoft 365. Aqui está um comando que desabilita estas três configurações:
Set-CsMeetingConfiguration -AdmitAnonymousUsersByDefault $False -AllowConferenceRecording $False -DesignateAsPresenter "None"
Observação
Para executar esse comando, você deve instalar o módulo Skype for Business Online do PowerShell.
A interpretação deste comando do PowerShell é:
- Nas configurações de novas reuniões do Skype for Business Online (Set-CsMeetingConfiguration), desabilite permitindo que usuários anônimos obtenham entrada automática em reuniões (-AdmitAnonymousUsersByDefault $False).
- Desabilite a capacidade dos participantes de gravar reuniões (-AllowConferenceRecording $False).
- Não designe todos os usuários da sua organização como apresentadores (-DesignateAsPresenter "None").
Para restaurar essas configurações padrão (habilitar as opções), execute este comando:
Set-CsMeetingConfiguration -AdmitAnonymousUsersByDefault $True -AllowConferenceRecording $True -DesignateAsPresenter "Company"
Há outros cenários semelhantes também, e é por isso que os administradores devem saber como executar o PowerShell para comandos do Microsoft 365.
O PowerShell para Microsoft 365 é ótimo para operações em massa
Interfaces visuais como a Centro de administração do Microsoft 365 são mais valiosas quando você tem uma única operação a ser executada. Por exemplo, se você precisar desabilitar uma conta de usuário, poderá usar o centro de administração para localizar e limpar rapidamente uma caixa de seleção. Isso pode ser mais fácil do que executar uma operação semelhante no PowerShell.
Mas se você precisar mudar muitas coisas ou algumas coisas selecionadas em um grande conjunto de outras coisas, o Centro de administração do Microsoft 365 pode não ser a melhor ferramenta. Por exemplo, digamos que você precisa alterar o prefixo em milhares de números de telefone ou remover o usuário específico Ken Myer de todos os seus sites do SharePoint Online. Como você faria isso no Centro de administração do Microsoft 365?
Para o último exemplo, diga que você tem várias centenas de sites do SharePoint Online e não sabe de quais Ken Meyer é membro. Você teria que começar no Centro de administração do Microsoft 365 e, em seguida, executar este procedimento para cada site:
Selecione a URL do site.
Na caixa propriedades do conjunto de sites , selecione o link Endereço do Site da Web para abrir o site.
No site, selecione Compartilhar.
Na caixa de diálogo Compartilhar , selecione o link que mostra todos os usuários que têm permissões para o site:
Na caixa de diálogo Compartilhado com , selecione Avançado.
Role para baixo a lista de usuários, localize e selecione Ken Myer (supondo que ele tenha permissões para o site) e selecione Remover Permissões de Usuário.
Isso levaria muito tempo para várias centenas de sites.
A alternativa é executar o seguinte comando no PowerShell para Microsoft 365 para remover Ken Myer de todos os seus sites:
Get-SPOSite | ForEach {Remove-SPOUser -Site $_.Url -LoginName "kenmyer@litwareinc.com"}
Observação
Esse comando exige que você instale o módulo do PowerShell do SharePoint Online.
A interpretação deste comando do PowerShell é: Obtenha todos os sites do SharePoint na assinatura atual do Microsoft 365 (Get-SPOSite) e, para cada site, remova Ken Meyer da lista de usuários que podem acessá-lo (ForEach {Remove-SPOUser -Site $_. Url -LoginName "kenmyer@litwareinc.com"}).
Dizemos ao Microsoft 365 para remover Ken Meyer de todos os sites, incluindo aqueles aos quais ele não tem acesso. Portanto, os resultados mostrarão erros para os sites aos quais ele não tem acesso. Podemos usar uma condição adicional neste comando para remover Ken Meyer somente dos sites que o têm em sua lista de logon. Mas os erros retornados não causam nenhum dano aos próprios sites. Esse comando pode levar alguns minutos para ser executado em centenas de sites, em vez de horas trabalhando no Centro de administração do Microsoft 365.
Aqui está outro exemplo de operação em massa. Use este comando para adicionar Bonnie Kearney, uma nova administradora do SharePoint, a todos os sites da organização:
Get-SPOSite | ForEach {Add-SPOUser -Site $_.Url -LoginName "bkearney@litwareinc.com" -Group "Members"}
A interpretação deste comando do PowerShell é: Obtenha todos os sites do SharePoint na assinatura atual do Microsoft 365 e, para cada site, permita acesso a Bonnie Kearney adicionando seu nome de logon ao grupo Membros do site (ForEach {Add-SPOUser -Site $_. Url -LoginName "bkearney@litwareinc.com" -Grupo "Membros"}).
O PowerShell para Microsoft 365 é ótimo em filtrar dados
O Centro de administração do Microsoft 365 fornece várias maneiras de filtrar seus dados para localizar facilmente um subconjunto de informações direcionado. Por exemplo, o Exchange facilita a filtragem de praticamente qualquer propriedade da caixa de correio de um usuário. Por exemplo, aqui está a lista de caixas de correio para todos os usuários que moram na cidade de Bloomington:
O centro de administração do Exchange também permite combinar critérios de filtro. Por exemplo, você pode encontrar as caixas de correio para todas as pessoas que moram em Bloomington e trabalham no departamento de Finanças.
Mas há limitações para o que você pode fazer no Centro de Administração do Exchange. Por exemplo, você não poderia encontrar tão facilmente as caixas de correio de pessoas que vivem em Bloomington ou San Diego, ou as caixas de correio para todas as pessoas que não vivem em Bloomington.
Você pode usar o seguinte comando do PowerShell para Microsoft 365 para obter uma lista de caixas de correio para todas as pessoas que moram em Bloomington ou San Diego:
Get-User | Where {$_.RecipientTypeDetails -eq "UserMailbox" -and ($_.City -eq "San Diego" -or $_.City -eq "Bloomington")} | Select DisplayName, City
Aqui está um exemplo dos resultados:
DisplayName City
----------- ----
Alex Darrow San Diego
Bonnie Kearney San Diego
Julian Isla Bloomington
Rob Young Bloomington
A interpretação deste comando do PowerShell é: Obter todos os usuários na assinatura atual do Microsoft 365 que têm uma caixa de correio na cidade de San Diego ou Bloomington (Onde {$_. RecipientTypeDetails -eq "UserMailbox" -e ($_. City -eq "San Diego" -ou $_. City -eq "Bloomington")}) e, em seguida, exiba o nome e a cidade para cada (Selecione DisplayName, City).
E aqui está o comando para listar todas as caixas de correio para pessoas que moram em qualquer lugar, exceto Bloomington:
Get-User | Where {$_.RecipientTypeDetails -eq "UserMailbox" -and $_.City -ne "Bloomington"} | Select DisplayName, City
Aqui está um exemplo dos resultados:
DisplayName City
----------- ----
MOD Administrator Redmond
Alex Darrow San Diego
Allie Bellew Bellevue
Anne Wallace Louisville
Aziz Hassouneh Cairo
Belinda Newman Charlotte
Bonnie Kearney San Diego
David Longmuir Waukesha
Denis Dehenne Birmingham
Garret Vargas Seattle
Garth Fort Tulsa
Janet Schorr Bellevue
A interpretação deste comando do PowerShell é: Obter todos os usuários na assinatura atual do Microsoft 365 que têm uma caixa de correio não localizada na cidade de Bloomington (Onde {$_. RecipientTypeDetails -eq "UserMailbox" -e $_. City -ne "Bloomington"}) e, em seguida, exiba o nome e a cidade para cada um.
Usar curingas
Você também pode usar caracteres curinga em seus filtros do PowerShell para corresponder a parte de um nome. Por exemplo, suponha que você esteja procurando uma conta de usuário. Tudo o que você pode se lembrar é que o sobrenome do usuário era Anderson ou talvez Henderson ou Jorgenson.
Você pode rastrear esse usuário no Centro de administração do Microsoft 365 usando a ferramenta de pesquisa e realizando três pesquisas diferentes:
Uma para Mendes
Uma para Gonçalves
Uma para Gomes
Como todos esses três nomes terminam em "filho", você pode dizer ao PowerShell para exibir todos os usuários cujo nome termina em "filho". Aqui está o comando:
Get-User -Filter '{LastName -like "*son"}'
A interpretação deste comando do PowerShell é: Obtenha todos os usuários na assinatura atual do Microsoft 365, mas use um filtro que lista apenas os usuários cujos sobrenomes terminam em "filho" (-Filtrar '{LastName -like "*son"}'). O * significa qualquer conjunto de caracteres, que são letras no sobrenome do usuário.
O PowerShell para Microsoft 365 facilita a impressão ou a salvação de dados
O Centro de administração do Microsoft 365 permite exibir listas de dados. Aqui está um exemplo do centro de administração do Skype for Business Online que exibe uma lista de usuários habilitados para Skype for Business Online:
Para salvar essas informações em um arquivo, você deve cole-as em um documento ou planilha do Microsoft Excel. Qualquer caso pode exigir formatação adicional. Além disso, o Centro de administração do Microsoft 365 não fornece uma maneira de imprimir diretamente a lista exibida.
Felizmente, você pode usar o PowerShell não só para exibir a lista, mas para salvá-la em um arquivo que pode ser facilmente importado para o Excel. Aqui está um comando de exemplo para salvar Skype for Business dados de usuário online em um arquivo CSV (valores separados por vírgulas), que pode ser facilmente importado como uma tabela em uma planilha do Excel:
Get-CsOnlineUser | Select DisplayName, UserPrincipalName, UsageLocation | Export-Csv -Path "C:\Logs\SfBUsers.csv" -NoTypeInformation
Aqui está um exemplo dos resultados:
A interpretação deste comando do PowerShell é: obtenha todos os usuários do Skype for Business Online na assinatura atual do Microsoft 365 (Get-CsOnlineUser); obtenha apenas o nome de usuário, UPN e local (Selecione DisplayName, UserPrincipalName, UseLocation); e salve essas informações em um arquivo CSV chamado C:\Logs\SfBUsers.csv (Export-Csv -Path "C:\Logs\SfBUsers.csv" -NoTypeInformation).
Você também pode usar opções para salvar essa lista como um arquivo XML ou uma página HTML. Na verdade, com comandos adicionais do PowerShell, você pode salvá-lo diretamente como um arquivo do Excel, com qualquer formatação personalizada desejada.
Você também pode enviar a saída de um comando do PowerShell que exibe uma lista diretamente para a impressora padrão no Windows. Aqui está um comando de exemplo:
Get-CsOnlineUser | Select DisplayName, UserPrincipalName, UsageLocation | Out-Printer
O seu documento impresso ficará assim:
A interpretação deste comando do PowerShell é: Obter todos os usuários do Skype for Business Online na assinatura atual do Microsoft 365; obtenha apenas o nome de usuário, UPN e local; e envie essas informações para a impressora Padrão do Windows (Out-Printer).
O documento impresso tem a mesma formatação simples que a exibição na janela de comando do PowerShell. Para obter uma cópia impressa, basta adicionar | Out-Printer até o final do comando.
O PowerShell para Microsoft 365 permite gerenciar entre produtos de servidor
Os componentes que compõem o Microsoft 365 foram projetados para trabalhar juntos. Por exemplo, suponha que você adicione um novo usuário ao Microsoft 365 e especifique essas informações como o departamento do usuário e o número de telefone. Essas informações estarão disponíveis se você acessar as informações do usuário em qualquer um dos serviços do Microsoft 365: Skype for Business Online, Exchange ou SharePoint.
Mas isso é para informações comuns que abrangem o pacote de produtos. Informações específicas do produto, como informações sobre a caixa de correio do Exchange de um usuário, normalmente não estão disponíveis em todo o pacote. Por exemplo, informações sobre se a caixa de correio de um usuário está habilitada ou não estão disponíveis apenas no centro de administração do Exchange.
Suponha que você queira fazer um relatório que mostre as seguintes informações sobre todos os seus usuários:
O nome de exibição do usuário
Se o usuário está licenciado para o Microsoft 365
Se a caixa de correio do Exchange do usuário está habilitada
Se o usuário está habilitado para o Skype for Business online
Você não pode produzir facilmente esse relatório no Centro de administração do Microsoft 365. Em vez disso, você teria que criar um documento separado para armazenar as informações, como uma planilha do Excel. Em seguida, obtenha todos os nomes de usuário e informações de licenciamento do Centro de administração do Microsoft 365, obtenha informações da caixa de correio do centro de administração do Exchange, obtenha Skype for Business Informações online do Skype for Business Online Administração centralize e, em seguida, combine essas informações.
A alternativa é usar um script do PowerShell para compilar o relatório para você.
O script de exemplo a seguir é mais complicado do que os comandos que você viu até agora neste artigo. Mas, ele mostra o potencial de usar o PowerShell para criar exibições de informações difíceis de obter de outra forma. Aqui está o script para compilar e exibir a lista de que você precisa:
$x = Get-AzureADUser
foreach ($i in $x)
{
$y = Get-Mailbox -Identity $i.UserPrincipalName
$i | Add-Member -MemberType NoteProperty -Name IsMailboxEnabled -Value $y.IsMailboxEnabled
$y = Get-CsOnlineUser -Identity $i.UserPrincipalName
$i | Add-Member -MemberType NoteProperty -Name EnabledForSfB -Value $y.Enabled
}
$x | Select DisplayName, IsLicensed, IsMailboxEnabled, EnabledforSfB
Aqui está um exemplo dos resultados:
DisplayName IsLicensed IsMailboxEnabled EnabledForSfB
----------- ---------- ---------------- --------------
Bonnie Kearney True True True
Fabrice Canel True True True
Brian Johnson False True False
Anne Wallace True True True
Alex Darrow True True True
David Longmuir True True True
Katy Jordan False True False
Molly Dempsey False True False
A interpretação deste script do PowerShell é:
- Obtenha todos os usuários na assinatura atual do Microsoft 365 e armazene as informações em uma variável chamada $x ($x = Get-AzureADUser).
- Inicie um loop que percorre todos os usuários na variável $x (foreach ($i em $x)).
- Defina uma variável chamada $y e armazene as informações da caixa de correio do usuário nela ($y = Get-Mailbox -Identity $i.UserPrincipalName).
- Adicione uma nova propriedade às informações do usuário chamada IsMailBoxEnabled. Defina-o como o valor da propriedade IsMailBoxEnabled da caixa de correio do usuário ($i | Add-Member -MemberType NoteProperty -Name IsMailboxEnabled -Value $y.IsMailboxEnabled).
- Defina uma variável chamada $y e armazene as informações do Skype for Business Online do usuário nela ($y = Get-CsOnlineUser -Identity $i.UserPrincipalName).
- Adicione uma nova propriedade às informações do usuário chamada EnableedForSfB. Defina-o como o valor da propriedade Habilitada das informações do Skype for Business Online do usuário ($i | Add-Member -MemberType NoteProperty -Name EnabledForSfB -Value $y.Enableed).
- Exiba a lista de usuários, mas inclua apenas seu nome, se eles estão licenciados e as duas novas propriedades que indicam se sua caixa de correio está habilitada e se eles estão habilitados para Skype for Business Online ($x | Selecione DisplayName, IsLicensed, IsMailboxEnabled, EnabledforSfB).
Confira também
Introdução ao Windows PowerShell para o Microsoft 365
Gerenciar contas de usuário, licenças e grupos do Microsoft 365 com o PowerShell
Usar o PowerShell do Windows para criar relatórios no Microsoft 365