Exportar fotos de perfil de usuario de Yammer con PowerShell

Yammer le permite exportar a los usuarios a un archivo CSV, pero eso viene sin una imagen de perfil.

Pero hay una API de Yammer, por lo que con PowerShell y los datos del archivo CSV también podemos obtener las imágenes de perfil.

Exportar el archivo CSV de usuarios de Yammer

Primero, necesitamos un archivo CSV con todos los usuarios, para lo cual debe ser un administrador de red dentro de su sitio de Yammer.

Vaya a Configuración > Administrador de red > Exportar usuarios y Exporte todos los usuarios.

Cuando abra el archivo CSV, verá una columna con un vínculo a la API de Yammer para cada usuario.

Cuando abra esta URL en su navegador, obtendrá un archivo XML con los datos de los usuarios.

En ese archivo XML hay un atributo, mugshot-url, que es la foto de perfil que queremos.

Conectarse a la API de Yammer

Antes de que podamos interactuar con la API de Yammer, primero debemos registrar una aplicación para poder autorizar las solicitudes.

Patrick Lamber ha escrito una gran publicación sobre esto, puedes encontrarla aquí. En resumen haz lo siguiente:

  1. Asegúrese de haber iniciado sesión como administrador en su Yammer
  2. Vaya a la siguiente dirección: https://www.yammer.com/client_applications
  3. Registre su aplicación, puede usar la dirección facial
  4. Una vez registrado, haga clic en Genere un token de desarrollador para esta aplicación

Cuando termine, copie el token generado (portador) en algún lugar, lo necesitaremos más tarde.

Creación del script de PowerShell

Así que tenemos un archivo CSV con todos los usuarios, un enlace a su archivo XML y tenemos un token de portador para autenticar. Es hora de comenzar a escribir:

Paso 1: importe el archivo CSV y filtre los usuarios

Agregué un archivo para que puedas seleccionar todos los usuarios o solo los activos.

#Set some variables
$csvFile = "C:\temp\yammer\Users.csv"
$exportFolder = "c:\temp\yammer\users\"
$allUsers = $false

#Import CSV
$csv = Import-Csv $csvFile -Delimiter ","
$state = if ($allUsers) { '*' } else { 'active' }

#Filter users
$users = $csv | Where-Object state -Like $state

Paso 2: cree el encabezado de la API REST

Para descargar el archivo XML necesitamos estar autenticados, podemos hacerlo con el token de portador que obtuvimos anteriormente de la consola del desarrollador de Yammer.

#Connect to Yammer API
$baererToken = "455423-asdwewqADSLKSAHDL" #Fake token 😉

$headers = @{ Authorization=("Bearer " + $baererToken) }

Paso 3: obtenga el archivo XML

Para cada usuario necesitamos obtener el archivo XML. Invocar-webrequest devuelve una cadena, por lo que la convertimos a XML para que sea más fácil trabajar con ella.

$response = Invoke-WebRequest -Uri $user.api_url –Method Get -Headers $headers -ContentType "application/xml"
$xml = [xml]$response

Paso 4: descarga la foto de perfil

Descargamos la foto con una webrequest:

Invoke-WebRequest -Uri $xml.response.'mugshot-url' -OutFile $exportFolder\$xml.response.name –Method Get -Headers $headers

Paso 5: ponerlo todo junto

Los fragmentos de código anteriores deben ensamblarse, desea recorrer los usuarios de CSV, crear la ubicación de salida según el nombre, tal vez solicitar un tamaño diferente al predeterminado 48 × 48 y verificar si tienen un conjunto de fotos.

Entonces, cuando combinamos todas las piezas juntas, obtenemos el siguiente script:

$csvFile = "C:\temp\yammer\Users.csv"
$exportFolder = "c:\temp\yammer\users\"
$allUsers = $false

$csv = Import-Csv $csvFile -Delimiter ","
$state = if ($allUsers) { '*' } else { 'active' }

#filter users
$users = $csv | Where-Object state -Like $state

#connect to Yammer API
$baererToken = "455423-asdwewqADSLKSAHDL" #Fake token 😉

$headers = @{ Authorization=("Bearer " + $baererToken) }

foreach ($user in $users)
{
	#set output filename
	$output = $exportFolder + $user.name + '.png'
	
	#get xml
	$response = Invoke-WebRequest -Uri $user.api_url –Method Get -Headers $headers -ContentType "application/xml"
	$xml = [xml]$response

	#get profile address from xml file
	$photoUrl = $xml.response.'mugshot-url'

	$url = $photoUrl.replace('48x48','256x256')
	
	#download photo
	if ($photoUrl) {
		
		#Check if it's a user picture or placeholder
		if ($photoUrl -Match 'no_photo') {
			#Do something else
		}else{
			Invoke-WebRequest -Uri $url -OutFile $output –Method Get -Headers $headers
		}
		
	}
}

Otros artículos relacionados

Arreglar Citrix borroso en Windows 10

Arreglar Citrix borroso en Windows 10

Actualizado: diciembre de 2017 En Windows 10, su Citrix Receiver puede mostrar texto borroso. Este problema se produce debido al ...
Leer Más
Instalación de Grafana, InfluxDB y Telegraf usando Docker

Instalación de Grafana, InfluxDB y Telegraf usando Docker

He estado usando PRTG para monitorear nuestra red durante más de 5 años, pero nunca me gustó la apariencia de ...
Leer Más
Bios Recovery Dell Vostro 3500 / 3700 después de que falló la actualización

Bios Recovery Dell Vostro 3500 / 3700 después de que falló la actualización

La semana pasada mi papá me llamó, estaba actualizando la BIOS de su computadora portátil Dell Vostro 3500 cuando de ...
Leer Más
Abrir aplicaciones para UWP como Edge en modo de pantalla completa

Abrir aplicaciones para UWP como Edge en modo de pantalla completa

Puede ejecutar Microsoft Edge y otras aplicaciones UWP (Universal Windows Platform) en modo de pantalla completa presionando la combinación de ...
Leer Más
Migrar video de Unifi a Unifi Protect

Migrar video de Unifi a Unifi Protect

A partir del 1 de enero de 2021, Unifi Video ya no será compatible. Lo que significa que Unifi Video ...
Leer Más
Cómo instalar y configurar Azure AD Connect

Cómo instalar y configurar Azure AD Connect

Para sincronizar sus usuarios locales de Active Directory con Azure AD, deberá instalar la herramienta Azure AD Connect. Esta herramienta ...
Leer Más

Deja un comentario