Búsqueda de sitios web

Uso de la “declaración Where” de PowerShell para crear búsquedas filtradas | Objetos de Office 365 y Exchange Online | Parte 1#3


La serie de artículos actual incluye tres artículos dedicados al tema del uso de PowerShell para “ver” información sobre Office 365 (Azure Active Directory) y objetos de Exchange Online.

  1. El primer artículo incluye una introducción básica a la "declaración Where" de PowerShell que utilizamos como "filtro" para obtener información sobre objetos con caracteres específicos.
  2. El segundo artículo incluye muchos ejemplos de filtrado de resultados de búsqueda en el entorno de Office 365 (Azure Active Directory). El ejemplo que proporciono estará relacionado principalmente con los "objetos de Office 365".
  3. El tercer artículo incluye muchos ejemplos de filtrado de resultados de búsqueda en el entorno Exchange Online. El ejemplo que proporciono estará relacionado con el “objeto de buzón” de Exchange Online y con los diferentes tipos de destinatarios de Exchange Online.

Utilice PowerShell para ver objetos de Office 365 y Exchange Online | Serie de artículos

La serie de artículos incluye los siguientes artículos:

  1. Uso de la “declaración Where” de PowerShell para crear búsquedas filtradas | Objetos de Office 365 y Exchange Online (este artículo)
  2. Utilice PowerShell para ver objetos de Office 365
  3. Utilice PowerShell para ver objetos de Exchange Online

¿Por qué necesitamos crear una búsqueda de filtro?

Una de las necesidades esenciales de cada administrador que gestiona cualquier infraestructura es la capacidad de buscar un "objeto específico" y realizar alguna "acción" sobre esos objetos.

El término - “objetos”.

En Office 365 y Exchange Online, el término "objetos" se puede traducir a varios tipos de objetos, como cuentas de usuario de Azure Active Directory, buzones de correo de Exchange Online, carpetas públicas, grupos, etc.

El término - realiza alguna “acción”.

El significado de - realizar alguna acción también se puede traducir a un sinfín de ejemplos.

En la mayoría de los escenarios, necesitaremos buscar "objetos" específicos y luego realizar una tarea administrativa "en los objetos", como por ejemplo:

  • Actualiza alguna propiedad de los objetos especificados.
  • Habilite una característica específica en los objetos especificados.
  • Exporte información sobre los objetos especificados a archivos como texto, CSV y HTML.

¿Qué hacer con los resultados de la “Búsqueda filtrada”?

Cuando usamos PowerShell para realizar una "Búsqueda filtrada", podemos usar los resultados de una de las siguientes maneras:

1. Mostrar resultados de búsqueda en la consola de PowerShell

En este escenario, nuestro propósito es simplemente obtener una "respuesta" a una "pregunta" que se mostrará en la consola PowerShell. Por ejemplo, muéstrame todos los Office 365 que no tienen licencia, muéstrame todos los buzones de Exchange Online que consideran “buzón compartido” y así sucesivamente.

2. Guarde el resultado de la búsqueda en una variable

En este escenario, nuestro propósito es "hacer algo" para cada objeto incluido en la "Búsqueda filtrada de PowerShell".

El primer paso se implementa definiendo una variable de PowerShell que sirve como un "almacenamiento temporal" que "contendrá" el resultado de la "Búsqueda filtrada de PowerShell".

En el siguiente paso, le pedimos a PowerShell que “busque” cada uno de los objetos que se incluyen en la matriz de “Resultados de búsqueda filtrados” y luego “haga algo” con cada uno de estos objetos.

Por ejemplo

  1. Cree una “Búsqueda filtrada de PowerShell” de usuarios de Office 365 que no tienen licencia.
  2. Almacene la información que obtuvimos de la “Búsqueda filtrada de PowerShell” en una variable.
  3. Utilice un comando adicional de PowerShell, que "accederá" a la información almacenada en la variable que se creó, recuperará la información sobre las "cuentas de usuario" y asignará licencias de Office 365 para cada uno de los usuarios de Office 365.

3. Exportar el resultado de la búsqueda a varios tipos de archivos

En este escenario, nuestro propósito es guardar la información que obtuvimos de la "Búsqueda filtrada de PowerShell" para su uso posterior, exportando la información a varios tipos de formatos de archivo, como TEXTO, CSV y HTML.

Uso de la declaración Where-Object de PowerShell para crear la "Búsqueda filtrada"

La herramienta que utilizamos para la tarea de realizar una consulta de búsqueda filtrada es el siguiente cmdlet de PowerShell.

Where-Object

Nota: En la serie de artículos actual, utilizamos la forma más corta: Dónde (en lugar de Dónde-Objeto). Otra opción que podemos usar para definir la "declaración Dónde" es usar los caracteres de signo de interrogación, '?' en lugar de 'Dónde' o 'Dónde-Objeto'.

El cmdlet Where-Object de PowerShell nos proporciona una manera de filtrar los datos devueltos por otros cmdlets de PowerShell.

En el siguiente diagrama, podemos ver la estructura del comando de PowerShell, que utiliza la “declaración Where. "

1. El comando de PowerShell que “Obtiene” información sobre objetos específicos

Esta es la parte que "obtiene" la información sobre un tipo de objeto específico, como el usuario de Azure Active Directory o el buzón de Exchange Online (número 1).

Por ejemplo: Obtener-buzón

2. El filtro PowerShell “Declaración Where”

Esta es la parte (número 2) en la que usamos la “declaración Where” de PowerShell para “filtrar” el resultado que obtenemos del comando anterior.

Si queremos utilizar un término técnico, utilizamos la salida “canalizada” del comando anterior de PowerShell.

Cada instrucción Where comienza y encierra la condición de filtro mediante llaves.

3. El carácter "$"

La notación $_ (número 3) se utiliza para representar el objeto predeterminado (es decir, el objeto que se transfiere a través de la tubería).

En otras palabras, la notación $_ se utiliza para representar cada uno de los objetos incluidos en la "matriz de objetos" que obtenemos de los resultados de la consulta filtrada.

4. La propiedad concreta que buscamos

Esta es la propiedad del objeto específico (número 4), que utiliza el “filtro Dónde”.

Por ejemplo, obtenga buzones de correo de Exchange Online que tengan la propiedad "RecipientTypeDetails", incluya un valor específico.

Otro ejemplo podría ser: filtrar información sobre usuarios cuya propiedad “Departamento” incluye un valor específico.

5. El operador de comprensión de PowerShell

Esta es la "condición" que utiliza la "declaración Where" (número 5). La condición se define mediante el uso de un operador de comprensión como: Menor que, Igual a, No igual a, etc.

En la siguiente tabla podemos ver información sobre los operadores de comprensión de PowerShell.

-lt

Menos que

-le

Menos que o igual a

-gt

Mas grande que

-ge

Mayor qué o igual a

-eq

Igual a

-ne

No igual a

-like

Como; utiliza comodines para la coincidencia de patrones

6. El valor específico

Esta es la última parte en la que definimos el valor específico (número 6) que “incluye” en la propiedad del objeto.

El valor podría ser una fecha, un número, una cadena de texto, etc.

Por ejemplo, muestre solo los usuarios cuya propiedad "Departamento" incluya el valor "gerente".

Un ejemplo de “declaración Where” de PowerShell

En el siguiente ejemplo, utilizamos la “declaración Where” de PowerShell para obtener información sobre un tipo específico de buzones de correo de Exchange Online.

Para obtener una lista de un buzón de Exchange Online específico que se considera "buzón compartido", usaremos el siguiente comando de PowerShell:

Tenga en cuenta que en este ejemplo, "canalizamos" los resultados que se mostrarán utilizando el formato "FT" (tabla de archivos) e indicamos a PowerShell que muestre solo propiedades específicas de los objetos como: Alias y Detalles del tipo de destinatario.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails

El primer comando de PowerShell es:

Get-Mailbox -ResultSize Unlimited

El resultado de este comando es información sobre TODOS los buzones de correo de Exchange Online existentes.

En la segunda parte del comando de PowerShell (la parte que aparece después de la tubería), usamos la “declaración Where” de PowerShell de la siguiente manera:

Le pedimos a PowerShell que "observe los resultados" que obtuvimos en los pasos anteriores (la matriz de todos los buzones de correo de Exchange Online) y "busque" solo los buzones de correo de Exchange Online que respondan a la siguiente condición:

Los buzones de correo de Exchange Online cuya propiedad denominada “RecipientTypeDetails” incluyen un valor igual a “Buzón compartido”.

Usando la “declaración Where” de PowerShell con una combinación de variables

En la siguiente sección, me gustaría proporcionar un ejemplo de un escenario en el que utilizamos la “declaración Where” de PowerShell con una combinación de una variable.

Nuestra misión es proporcionar una solución para el siguiente escenario:

Asigne permisos de acceso completo al usuario de Exchange, para todos los buzones de correo de Exchange, cuyo título de usuario sea "Administrador".

En nuestro ejemplo, queremos otorgar a Adele permiso de acceso completo a todos los "buzones de correo de administradores".

Parte 1#5: Obtener información sobre un objeto específico de Exchange

En nuestro ejemplo, queremos obtener una lista de todos los usuarios de Exchange Online. El comando de PowerShell que utilizamos es:

Get-User

Parte 2#5: Uso de la “declaración Where” para filtrar la información

En esta parte, utilizamos la instrucción Where de PowerShell para filtrar el resultado obteniendo información solo sobre los usuarios de Exchange cuyo título es igual (eq) a "Administrador".

Get-User | Where {$_.Title -eq "Manager"}

Parte 3#5 - Crear una variable y almacenar información y la variable

En esta parte, estamos creando una variable que almacenará el resultado de la declaración Dónde.

La variable que definimos es $Managers (en un entorno PowerShell, usamos los caracteres $ para especificar una variable).

El comando de PowerShell se verá así:

$Managers = Get-User | Where {$_.Title -eq "Manager"}

Parte 4#5: Uso del operador ForEach Loop de PowerShell

En este paso, usamos el “operador de bucle” ForEach de PowerShell para declarar que le pedimos a PowerShell que haga algo para cada uno de los miembros de la matriz (cada usuario cuyo título es igual a Manager).

La información que se almacena en la variable denominada $Managers se considera como un “array”, y cada uno de los usuarios que se incluyen en los resultados, se puede considerar como un “Miembro del array”.

Usaremos la siguiente sintaxis de PowerShell:

Foreach ($Member in $Managers)

Tenga en cuenta que cuando utilizamos el operador ForEach Loop, utilizamos una variable adicional. En nuestro ejemplo, definimos una variable llamada $Member
Esta variable es solo una variable temporal, que se utiliza como un cartucho lógico, que contendrá información sobre el Miembro específico. , que recuperamos de la matriz de objetos que están almacenados en la variable denominada $Managers.

Parte 5#5: Ejecutar el comando requerido para cada uno de los miembros de la matriz

En este paso, ejecutamos el comando de PowerShell, que asignará permisos de acceso completo, a un nombre de usuario Adele, para cada uno de los “miembros” incluidos en la matriz.

En otras palabras, asignamos a Adele permisos de acceso completo a cada buzón de Exchange Online, que su usuario considera como Administrador.

El comando de PowerShell que utilizamos es:

Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All

Tenga en cuenta que no nos relacionamos con un nombre de administrador específico sino que usamos la variable $Member con la propiedad "Nombre".

El comando completo de PowerShell es:

$Managers = Get-User | Where { $_.Title -eq "Manager" }
Foreach ($Member in $Managers) {
    Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All
}

Usar la “declaración Where” de PowerShell para exportar datos específicos a un archivo.

En la última sección, me gustaría revisar la opción de: Usar la “declaración Where” de PowerShell para exportar datos específicos a un archivo.

Los formatos de archivo más comunes que se utilizan:

  • Formato de archivo de texto
  • Formato de archivo CSV (valores separados por comas)
  • formato de archivo HTML

En el siguiente diagrama, podemos ver el formato del comando de PowerShell, que utilizamos para exportar los "resultados" que obtenemos de la consulta de búsqueda filtrada a los distintos tipos de archivos.

Un ejemplo del comando de PowerShell que ejecutará una "consulta de búsqueda filtrada" utilizando la "declaración Where" de PowerShell podría ser un comando en el que solicitamos a PowerShell obtener información sobre tipos específicos de buzones de correo de Exchange Online.

Por ejemplo, los buzones de Exchange Online que se consideran “buzones compartidos” y luego exportan la información a varios tipos de formatos de archivo.

En la siguiente sección, podemos ver un ejemplo de la sintaxis del comando PowerShell que utilizamos para exportar datos a varios tipos de formatos de archivo:

Ejemplo 1: exportar la búsqueda filtrada de PowerShell a un archivo de texto.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Out-File c:\temp\file.txt

Ejemplo 2: exportar la búsqueda filtrada de PowerShell a un archivo CSV.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Export-CSV c:\temp\file.csv

Ejemplo 3: exportar la búsqueda filtrada de PowerShell a un archivo HTML.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | ConvertTo-Html c:\temp\file.html

En el siguiente apartado podemos ver un ejemplo de los resultados.

En mi ejemplo, exporté el resultado de la búsqueda en tres tipos de archivos diferentes. Cada uno de los formatos de tipo de archivo tiene sus "Ventajas".

Este es un ejemplo de la información que se exportó a un archivo de texto.

Este es un ejemplo de la información que se exportó a un archivo CSV.

La ventaja de utilizar el formato de archivo CSV es que podemos utilizar aplicaciones como Microsoft Excel, que nos ayudarán a ver la información de una forma más cómoda, filtrar columnas específicas, etc.

Este es un ejemplo de la información que se exportó a un archivo HTML.

La ventaja de usar el formato de archivo HTML es que es más adecuado para "Informes" y podemos mostrar la información exportada usando un simple navegador web.

El ejemplo que aparece en la siguiente captura de pantalla no es la salida de PowerShell "HTML estándar". La “salida en formato HTML original” es más básica.

En mi ejemplo, utilizo un script de PowerShell que agrega un formato de diseño adicional a la salida HTML.

En caso de que desee utilizar esta “salida HTML más diseñada”, puede utilizar los scripts de PowerShell que agregué a Otros artículos de la serie.

  • Utilice PowerShell para ver objetos de Office 365 | Parte 2#3
  • Utilice PowerShell para ver objetos de Exchange Online | Parte 3#3

En el próximo artículo, analizaremos el uso de PowerShell para ver objetos de Office 365.

Artículos relacionados