[PowerShell] GA of PowerShell Crescendo

Hello everyone,

GA of PowerShell Crescendo has been announced yesterday.

If you didn’t heard about Crescendo, it is a « a development accelerator enabling you to rapidly build PowerShell cmdlets that leverage existing command-line tools. »

The GA includes these keys features :

  • Define cmdlets from simple key/value statements in a JSON file
  • Support for modular design – cmdlet definitions can be in a one or more JSON files
  • A JSON schema that helps you create your Crescendo configuration using IntelliSense and tooltips
  • Three styles of output handling code allowing you to separate your code from the cmdlet definitions for easier debugging and development
  • Privilege elevation mechanisms in WindowsLinux, and macOS
  • Crescendo generates a PowerShell script module ready for deployment
  • While Crescendo requires PowerShell 7 or higher for authoring configurations, the generated module can run on Windows PowerShell 5.1 and higher
  • Example configurations for you to copy and reuse
  • Experimental Help parsers that provide proof-of-concept examples for auto-generating cmdlet configurations

For more information about Crescendo :

[PowerShell – Teams] Get all teams a user is member of

Hello everyone,

I recently needed to get a list of all Microsoft Teams a particular user was member of. First, I thought that I was going to need loops in order to loop in every single MS Teams of the tenant. But after reading the documentation, I found the parameter User on the cmdlet Get-Team that can be use to list all the Teams a user is member of 🙂

Connect-MicrosoftTeams
Get-Team -User "[email protected]"

[PowerShell – EXO] Get all members and permissions of Shared Mailboxes

I recently needed to get a list of all Exchange Online Shared Mailboxes members and permissions.

Here is how to do it :

Connect-ExchangeOnline

Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize:Unlimited | Get-MailboxPermission |Select-Object Identity,User,AccessRights | Where-Object {($_.user -like '*@*')}

Here is the results that you’ll have :

[M365] Exporter la configuration d’un tenant en PowerShell

Suite à un besoin client d’exporter la configuration de son tenant 365, je me suis remis à chercher un peu ce qui se faisait dans ce domaine. Il y a quelques temps, j’avais écrit, pour un client, un script (long, complet et complexe) pour effectuer cette tâche. Après mes recherches du jour, je suis tombé sur le module Microsoft 365 DSC.

Le module Microsoft 365 DSC permet, entre autre, d’exporter la configuration d’un tenant 365. Parfait pour mes besoins ! Ce module permet de réaliser bien d’autres opérations, pour plus d’informations, je vous invite à vous diriger ici : https://microsoft365dsc.com/

Voici comment utiliser ce module pour exporter la configuration de votre tenant.

1. Installer le module

Ouvrer votre console PowerShell en tant qu’administrateur et tapez la commande Install-Module Microsoft365DSC

2. Exporter la configuration de votre tenant

Toujours dans votre console (en tant qu’administrateur), tapez la commande suivante : Export-M365DSCConfiguration

Attendez ensuite que votre configuration soit exportée (ce qui peut prendre un certain moment)

3. Script

J’ai également écrit un script PowerShell pour réaliser cette opération que vous trouverez ici : https://github.com/sschorgen/PowerShell/blob/master/M365_Get-365TenantConfiguration/M365_Get-365TenantConfiguration.ps1

Ce script crée un dossier nommé M365DSC_Temp_Export_Config à la racine du disque C, dans lequel seront stockées les configurations extraites. En prérequis, il faut que le module Microsoft 365 DSC soit installé.

[PowerShell – Teams] Get all guests from all Teams

Hello everyone,

I recently needed to show to a client that he had lost control of the number of « external » teams he has and all the guests he had too.

I didn’t need to export the output, just to show him on the screen so the script I’m gonna show you is pretty simple and is can be optimized by exporting a clean output to a CSV or XML.

$Teams = Get-Team

foreach ($Team in $Teams) {

$Guests = Get-TeamUser -GroupID $Team.groupId | Where-Object {$_.Role -eq "Guest"}
Write-Output "Team : $($Team.DisplayName)"
Write-Output "Members : "
$Guests

}

[O365 – OWA] Erreur 500 à l’ouverture d’un webmail Office 365

Dans un projet récent, alors que je venais tout juste de déployer des licences Exchange Online à un client, j’ai eu l’erreur suivant lorsque certains utilisateurs ont tenté de se connecter au webmail :

Something went wrong.
Something went wrong and we couldn't complete your request.


X-ClientId: A44884EC5E9B4B95A46A9A2E1E46044E
request-id e803147d-6988-420c-b79e-9732eeca2206
X-OWA-Error Microsoft.Exchange.Data.Storage.DatabaseNotFoundException
X-OWA-Version 15.20.3654.25
X-FEServer JN2P275CA0024
X-BEServer DB7PR04MB4569
Date:12/15/2020 10:06:46 PM
InnerException: Microsoft.Exchange.Data.Storage.DatabaseNotFoundException

D’après le message d’erreur, on peut constater que la base de données Exchange n’a pas été trouvée.

Pour résoudre ce souci, j’ai du déplacer la boîte aux lettre en utilisant la cmdlet New-MoveRequest.

Pour se faire, il vous faudra utiliser le GUID de la BAL Exchange de l’utilisateur. Afin de récupérer celui-ci, tapez la commande suivante :

Get-Mailbox [email protected] | Select-Object ExchangeGuid
Récupération de l’ExchangeGuid d’une boîte aux lettres utilisateurs

Une fois l’ID de la boîte aux lettres récupéré, vous pouvez initier une demande de déplacement en entrant la cmdlet suivante :

New-MoveRequest -Identity ExchangeGUID
Initialisation d’une demande de déplacement de boîte aux lettres utilisateur

Vous pouvez constater que le statut du job est WaitingForJobPickup. L’action de déplacement sera réalisée quelques minutes après avoir entré cette commande. Afin de vérifier l’état du déplacement, vous pouvez entrer la cmdlet suivante :

Get-MoveRequest
Affichage de l’état d’une demande de déplacement (en cours)

Tant que le statut est à InProgress, le déplacement n’est pas terminé. Il le sera lorsque le statut sera à la valeur Completed.

Affichage de l’état d’une demande de déplacement (terminée)

Demandez à l’utilisateur de se reconnecter au webmail et cela devrait être fonctionnel (cela l’a été dans mon cas).

[PowerShell] Installer le module AzureAD

Dans le cadre de vos scripting PowerShell MS365, il vous sera nécessaire d’utiliser le module Azure AD (ajout d’utilisateurs, modification d’attributs utilisateurs, attribution de licences, …).

Pour ce faire, lancez une console PowerShell en tant qu’administrateur et entrez la commande suivante :

Install-Module AzureAD

Si c’est la première fois que vous installez un module, vous devrez installer le fournisseur NuGet comme vous le verrez sur la capture d’écran ci-dessous.

Pour valider l’installation du module AzureAD, saisissez la lettre T (ou A si votre OS est en anglais) et appuyez sur Entrée.

 

Propulsé par WordPress.com.

Retour en haut ↑