Experto en varios temas: Administre Office 365 con Windows PowerShell

Si nunca pensó que iba a usar Windows PowerShell para administrar aplicaciones de nube como por ejemplo Office 365, he aquí una introducción rápida para principiantes.

Greg Shields

Mi empresa, Concentrated Technology, hace poco completó una transición desde Google Apps for Business a Microsoft Office 365. Nuestra migración fue increíblemente indolora. Usando una solución de terceros, migramos nuestros daos a la nueva plataforma con poco más de dos contraseñas y un clic del mouse por usuario.

De pronto, nos encontramos en una infraestructura completamente nueva con todo un conjunto nuevo de reglas. Para un grupo de personas bastante experimentadas con las tecnologías de Microsoft, nos tomó de sorpresa el alcance de la exposición de Windows PowerShell en Office 365. La idea de Windows PowerShell y Office 365 puede parecer contraproducente de alguna manera. Las personas buscan soluciones como Office 365 en parte porque buscan simplicidad.

Aunque completar tareas con Windows PowerShell no es necesariamente complejo, ciertamente no es trivial. Solo comenzar es quizás la parte más difícil. De manera que este mes, ideé una ordenada introducción rápida de Windows PowerShell para Office 365 para principiantes. Siga estos pasos y conozca unos cuantos cmdlets clave y podría descubrir que "eficaz" y "rápido" no tienen por qué excluirse mutuamente.

Paso 1: Siéntase cómodo con la ejecución (realmente) remota

Windows PowerShell es, sin duda, eficaz. Hay un punto en la curva de aprendizaje, sin embargo, en que los principiantes a menudo se pierden. Ese punto suele ser posterior al aprendizaje de los cmdlets más básicos, pero antes de poseer una comprensión acabada de cómo crear soluciones útiles. Una cosa es ejecutar Get-Process y ver cómo los procesos se ejecutan en su equipo local. Otra cosa muy distinta es canalizar una serie de cmdlets frente a un equipo remoto para completar algo de acción práctica.

Mi consejo es pasar algo de tiempo de calidad para comprender cómo funciona la ejecución remota de PowerShell en su LAN local. Explore cómo funciona el parámetro –computerName con algunos cmdlets, mientras que Invoke-Command es necesario con otros. Siéntase cómodo con Get-Help y su inmensamente útil conmutador -exa para ver ejemplos.

Necesitará estas habilidades porque Office 365 se expande en ellas de maneras que requieren una base sólida. Con los cmdlets de Office 365, estará ejecutando contra servidores Microsoft en vez del suyo propio, enviando comandos por Internet en vez de su LAN. Es ese concepto el que requiere una nueva mentalidad, pero eso es bueno. Sentirse cómodo con estos conceptos dará frutos muy eficaces una vez que llegue al momento del "¡ajá!".

Paso 2: Prepare su PowerShell

Windows PowerShell no habla el idioma de Office 365 recién salido de la caja. Lograr que su escritorio de Windows 7 hable la lengua de Office 365 requiere unas cuantas tareas preparatorias.

Navegue a la página Use Windows PowerShell para administrar Office 365 e instale los cmdlets de Office 365. Estos se instalan como parte del Módulo Microsoft Online Services para Windows PowerShell. Vienen en ediciones de x86 y x64. Antes de instalarlos, también necesitará Asistente de inicio de sesión de Microsoft Online Services, así como Windows PowerShell y .NET Framework 3.5.1 instalados y habilitados en su equipo de escritorio.

Paso 3: Importe el módulo, cree una sesión, importe comandos

Instalar los cmdlets de Windows PowerShell solo prepara el escenario. No hace nada para conectarlos en realidad con la nube de Microsoft Office 365. Conectarse a la nube requiere un complejo (pero a la vez sencillo) proceso de cinco pasos:

1. Importe su módulo de Online Services recién instalado

2. Ingrese las credenciales de Office 365

3. Cree una sesión remota

4. Importe los comandos de esa sesión en su sesión local de Windows PowerShell

5. Conéctese a los servicios de Office 365

Los cinco comandos para lograr este procedimiento lucen así:

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

Esta estructura puede parecer complicada al primer vistazo pero recuerde: Windows PowerShell está diseñado para ser todo para todos. Como resultado, algunos comandos son solo más grandes que otros. Debe reconocer que esta estructura logra cinco cosas: Primero, usa Import-Module para agregar los cmdlets de Office 365 a su sesión, mientras que habilita su sesión local para que hable el idioma de Office 365.

Segundo, se inicia un cuadro de diálogo que solicita su nombre de usuario y contraseña (que será como esta: username@domain.onmicrosoft.com). Esta información de credencial se almacena en la variable $O365Cred, lo cual le permite usarla nuevamente más tarde.

Aquí es donde las cosas se ponen impresionantes. El tercer y cuarto comando crea una nueva sesión de Windows PowerShell en la nube en https://ps.outlook.com/powershell. Luego importan los cmdlets desde esa sesión a su sesión local. Imagínelo como si usara PSExec para obtener acceso a un símbolo de sistema del servidor. La gran diferencia es que el servidor remoto existe en alguna parte de la nube. Su sesión remota en realidad se fusiona con su sesión local (ver Figura 1).

Creating a remote Office 365 session

Figura 1 Creación de una sesión remota de Office 365

Ahora dé un segundo vistazo al texto en amarillo en la Figura 1. Verá algo similar 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"

La URI que vea será levemente diferente que la que aparece aquí. Conectar una sesión remota a https://ps.outlook.com/powershell la redirige automáticamente a cual sea el servidor que hospede sus recursos de Office 365. En mi caso, esos servidores son pod51018psh.outlook.com y sn2prd0702psh.outlook.com.

El suyo será diferente. Hay servidores con los cuales interactuará directamente cuando más tarde invoque los comandos de Windows PowerShell para Office 365.

Paso 4: Respete su nueva librería de comandos

Luego de que ha invitado una conexión, está listo para administrar sus activos de Office 365 . En este punto, la exposición de Windows PowerShell se limita solo a recursos de Office 365 y Exchange Pronto viene la exposición a SharePoint.

Puede ver una lista de cmdlets de Office 365 ahora disponibles al ingresar Get-Command -module MSOnline. También encontrará una tabla conveniente de estos comandos junto con breves descripciones aquí.

Este es un cmdlet especialmente útil que cambiará una contraseña de Office 365. Restablece la contraseña a P@ssword!. También puede omitir el parámetro -NewPassword para generar una contraseña aleatoria de manera automática:

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

Todos estos cmdlets se relacionan con objetos de Office 365. Sumado a ellos hay un segundo conjunto que administra los recursos de Exchange con los cuales tales objetos interactúan. Hay un número aparentemente abrumador de cmdlets, pero hay una referencia muy útil sobre ellos aquí.

Paso 5: Los perfiles facilitan la vida

Los cinco comandos del Paso 3 que lo conectan con la nube en realidad son un gran bloque de texto. Volver a escribir ese bloque de texto cada vez que inicia sesión puede hacer que trabajar con Windows PowerShell parezca más esfuerzo del que vale la pena. Pero Windows PowerShell (y en realidad todo el scripting en general) se trata de hacer cosas una vez y luego beneficiarse para siempre del esfuerzo.

Cada vez que comienza una sesión de Windows PowerShell, ejecutará cualquier comando que encuentre en un archivo especial al que hace referencia la variable $profile. Puede ver dónde existe ese archivo al ejecutar dir $profile en el shell.

My $profile es el archivo Microsoft.PowerShell_profile.ps1 (ver Figura 2), el cual se encuentra en la carpeta C:\Users\gshields\Documents\WindowsPowerShell. Puede editar este documento en su editor de texto favorito para agregarlo a los cinco comandos de conexión. Ahora cada vez que inicie Windows PowerShell, solo necesita ingresar un nombre de usuario y contraseña para conectarse de manera automática con Office 365, así como todo lo demás en su red.

The $profile view

Figura 2 La vista de $profile.

Con el poder llega la responsabilidad

Puede seguir estos pasos para crear un espacio de trabajo fusionado sin problemas en el cual puede administrar sus recursos locales y remotos. Ese mismo espacio de trabajo puede ser tan peligroso como útil.

Si ahogó una risa cuando conoció por primera vez los resultados de ejecutarGet-Process | Stop-Process (una pista: no lo haga), sentirá escalofríos cuando se dé cuenta de lo que Get-MsolUser | Remove-MsolUser podría hacer. Tenga cuidado con el poder que acaba de encontrar. Nunca olvide la responsabilidad que lo acompaña.

Greg Shields

Greg Shields, MVP, es socio de Concentrated Technology. Obtenga más información acerca de las sugerencias y los trucos de Jack en varios temas de Shields en ConcentratedTech.com.

Contenido relacionado