Pau pra toda obra: Gerencie o Office 365 com o Windows PowerShell

Se você nunca pensou que precisaria usar o Windows PowerShell para gerenciar aplicativos na nuvem, como o Office 365, veja aqui um Início Rápido para os novatos.

Greg Shields

Minha empresa, a Concentrated Technology, recentemente concluiu uma transição do Google Apps for Business para o Microsoft Office 365. Nossa migração foi impressionantemente tranquila. Usando uma solução simples de terceiros, migramos nossos dados para a nova plataforma usando pouco mais de duas senhas e um clique de mouse por usuário.

De repente, nos encontramos em meio a uma infraestrutura completamente nova, com um conjunto de regras totalmente novo. Para um grupo de pessoas bastante experientes com as tecnologias da Microsoft, fomos pegos de surpresa pelo escopo da exposição do Windows PowerShell no Office 365. A ideia da união entre o Windows PowerShell e o Office 365 pode parecer um tanto improvável. As pessoas buscam soluções como o Office 365 em parte porque elas querem ter simplicidade.

Embora a execução de tarefas com o Windows PowerShell não seja exatamente complexa, também não é trivial. Começar talvez seja a parte mais difícil. Portanto, este mês, eu elaborei um Guia de Início Rápido do Windows PowerShell para Office 365 bem-organizado para os usuários novatos. Siga estas etapas e aprenda alguns cmdlets importantes, e talvez você descubra que “poderoso” e “simples” não precisam ser mutuamente exclusivos.

Etapa 1: fique à vontade com a execução (realmente) remota

O Windows PowerShell é realmente poderoso. No entanto, há um ponto na curva de aprendizado em que os novatos sempre se perdem. Normalmente, isso ocorre após o aprendizado dos cmdlets mais básicos, mas antes de se ter uma compreensão total de como criar soluções úteis. Uma coisa é executar Get-Process e ver os processos sendo executados em seu computador local. Outra totalmente diferente é fazer o pipeline de uma série de cmdlets em algum computador remoto para executar algumas ações do mundo real.

Meu conselho é que você dedique algum tempo tentando compreender como a conexão remota do PowerShell funciona em sua LAN local. Explore a maneira como o parâmetro –computerName funciona em alguns cmdlets, enquanto Invoke-Command é necessário em outros. E familiarize-se com Get-Help e sua opção -exa extremamente útil para a visualização de exemplos.

Você precisará dessas habilidades porque o Office 365 as explora de uma maneira que exigirá de você uma base sólida. Com os cmdlets do Office 365, você fará a execução contra servidores da Microsoft em vez de seus próprios servidores, enviando comandos pela Internet em vez de enviá-los pela LAN. É esse conceito que requer uma reformulação da sua forma de pensar, mas isso é uma boa coisa. Sentir-se à vontade com esses conceitos irá lhe render alguns dividendos de poder impressionante quando você atingir aquele momento do “a-ha!”.

Etapa 2: prepare seu PowerShell

O Windows PowerShell não consegue falar a língua do Office 365 logo de imediato. Fazer com que seu desktop com o Windows 7 fale o idioma do Office 365 requer algumas tarefas preparatórias.

Navegue até a página Usar o Windows PowerShell para gerenciar o Office 365 e instale os cmdlets do Office 365. Eles são instalados como parte do Módulo do Microsoft Online Services para Windows PowerShell. Eles são fornecidos nas edições x86 e x64. Antes de instalá-los, você precisará também do Assistente de Conexão do Microsoft Online Services, bem como do Windows PowerShell e do .NET Framework 3.5.1 instalados e habilitados em seu computador desktop.

Etapa 3: importe o módulo, crie a sessão e importe comandos

Instalar os cmdlets do Windows PowerShell apenas prepara o caminho. A instalação não faz nada no sentido de realmente conectá-los à nuvem do Microsoft Office 365. A conexão com a nuvem requer um processo de cinco etapas complicado, mas eficiente:

1. Importe seu recém-instalado módulo do Online Services

2. Insira as credenciais do Office 365

3. Crie uma sessão remota

4. Importe os comandos dessa sessão em sua sessão local do Windows PowerShell

5. Conecte-se com os serviços do Office 365

Os cinco comandos para executar esse procedimento são:

Import-Module MSOnline $O365Cred = Get-Credential $O365Session = New-PSSession -ConfigurationNameMicrosoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection Import-PSSession $O365Session Connect-MsolService –Credential $O365Cred

Essa estrutura pode parecer um pouco complicada de início, mas lembre-se: o Windows PowerShell foi desenvolvido para ser tudo para todos. Como resultado, alguns comandos são simplesmente mais extensos do que outros. Você deve saber que essa estrutura executa cinco ações: Em primeiro lugar, ela usa Import-Module para adicionar os cmdlets do Office 365 à sua sessão, o que permite que sua sessão local passe a falar o idioma do Office 365.

Em segundo lugar, uma caixa de diálogo é aberta para solicitar seu nome de usuário e sua senha do Office 365 (que serão mais ou menos assim: username@domain.onmicrosoft.com). Essas credenciais são armazenadas na variável $O365Cred, que poderá ser usada novamente mais tarde.

É aqui que as coisas ficam impressionantes. O terceiro e o quarto comandos criam uma nova sessão do Windows PowerShell na nuvem, em https://ps.outlook.com/powershell. Em seguida, importe os cmdlets daquela sessão para sua sessão local. Pense nisso como se estivesse usando o PSExec para acessar o prompt de comando de algum servidor remoto. A grande diferença é que o servidor remoto existe em algum lugar da nuvem. Sua sessão remota é, na verdade, mesclada com sua sessão local (consulte a Figura 1).

Creating a remote Office 365 session

Figura 1 Criando uma sessão remota do Office 365.

Agora, dê uma segunda olhada no texto amarelo na Figura 1. Deverá aparecer algo semelhante a:

WARNING: Your connection has been redirected to the following URI: "https://pod51018psh.outlook.com/PowerShell-LiveID?PSVersion=2.0" WARNING: Your connection has been redirected to the following URI: "https://sn2prd0702psh.outlook.com/PowerShell-LiveID?PSVersion=2.0"

A URI que você verá será um pouco diferente da mostrada aqui. Conectar uma sessão remota com https://ps.outlook.com/powershell a direciona automaticamente para qualquer servidor que esteja hospedando seus recursos do Office 365. No meu caso, esses servidores são pod51018psh.outlook.com e sn2prd0702psh.outlook.com.

Os seus serão diferentes. Esses são os servidores com os quais você interagirá diretamente quando, mais tarde, chamar os comandos do Windows PowerShell do Office 365.

Etapa 4: respeite sua nova biblioteca de comandos

Uma vez iniciada uma conexão, você estará pronto para gerenciar seus ativos do Office 365. Neste ponto, a exposição do Windows PowerShell está limitada apenas aos recursos do Office 365 e do Exchange. A exposição ao SharePoint será tratada em breve.

Você pode ver uma lista dos cmdlets do Office 365 já disponíveis inserindo Get-Command -module MSOnline. Você encontrará também uma tabela útil desses comandos, junto com descrições curtas, aqui.

Veja a seguir um cmdlet particularmente útil que alterará uma senha do Office 365. Ele redefine a senha como P@ssword!. Você também pode omitir o parâmetro -NewPassword para gerar automaticamente uma senha aleatória:

Set-MsolUserPassword -UserPrincipalNameusername@domain.onmicrosoft.com-NewPasswordP@ssword!

Esses cmdlets estão todos relacionados a objetos do Office 365. Além deles, existe um segundo conjunto que gerencia os recursos do Exchange com os quais esses objetos interagem. Existe um número incrivelmente enorme de cmdlets, mas há uma referência útil para eles aqui.

Etapa 5: os perfis tornam a vida mais simples

Os cinco comandos da Etapa 3 que o conectam à nuvem são, na verdade, um grande bloco de texto. Ter que redigitar aquele bloco de texto sempre que você fizer logon pode parecer um trabalho maior do que na verdade é ao se trabalhar com o Windows PowerShell. Mas trabalhar com o Windows PowerShell — e, na verdade, com scripts de shell em geral — significa fazer as coisas uma vez só e se beneficiar delas para sempre.

Toda vez que uma sessão do Windows PowerShell é iniciada, ela executará quaisquer comandos que encontrar em um arquivo especial citado pela variável $profile. Você pode ver onde esse arquivo existe executando dir $profile no shell.

O meu $profile é o arquivo Microsoft.PowerShell_profile.ps1 (consulte a Figura 2), armazenado na pasta C:\Users\gshields\Documents\WindowsPowerShell. É possível editar esse documento em seu editor de texto preferido para adicionar isso aos cinco comandos de conexão. Agora, sempre que você iniciar o Windows PowerShell, precisará simplesmente inserir o nome de usuário e a senha para ser automaticamente conectado ao Office 365 e a quaisquer outros programas em sua rede.

The $profile view

Figura 2 A visualização de $profile.

Com o poder, vem a responsabilidade

Você pode seguir estas etapas para criar um espaço de trabalho perfeitamente mesclado no qual poderá gerenciar seus recursos locais e remotos. Esse mesmo espaço de trabalho pode ser, ao mesmo tempo, útil e perigoso.

Se você riu quando viu os primeiros resultados da execução de Get-Process | Stop-Process (aqui vai uma dica: não faça isso), você estremecerá ao descobrir o que Get-MsolUser | Remove-MsolUser pode fazer. Então, tome cuidado com esse poder recém-descoberto. E esteja sempre consciente da responsabilidade que o acompanha.

Greg Shields

Greg Shields, MVP, é parceiro da Concentrated Technology. Obtenha mais dicas e truques de “pau pra toda obra” de Shields em ConcentratedTech.com.

Conteúdo relacionado