Dans cet article nous verrons comment envoyer des fichiers dans SharePoint/Teams en utilisant PowerShell et l'API Graph uniquement, sans modules.


Contexte

- Vous avez un site SharePoint

- Vous souhaitez y envoyer des fichiers

- Vous ne voulez pas utiliser de module

Dans cet article je vous montrerais commet utiliser directement l'API Graph sans modules.

Auparavant j'avais l'habitude d'utiliser le module pnp.powershell et celui-ci fonctionnait très bien. Cependant depuis certaines mises à jours du module, des choses fonctionnaient à moitié.

C'est pourquoi j'ai décidé de procéder sans module et je dirais que de manière générale cela vous évitera toujours des problèmes à des mises à jours ainsi qu'une meilleure compréhension de l'API Graph.


Fonctionnement

Nous procèderons comme ci-dessous:

- Création d'une app Azure

- Ajout de permissions

- Ajout secret ou certificat

- Utiliser PowerShell et Graph

*Dans mon cas j'utiliserais un secret


Obtenir l'ID du site SharePoint

J'ai le site SharePoint suivant:https://systanddeploy.sharepoint.com/sites/Support

Dans le but de pouvoir envoyer des fichiers il nous faut l'ID correspondant au site.

Pour cela il vous suffit d'utiliser votre navigateur et de saisir l'adresse ci-dessous:

https://systanddeploy.sharepoint.com/sites/Support/_api/site/id


Création de l'app Azure 

1. Allez dans le portail Azure

2. Allez dans App registrations

3. Cliquez sur New registration

4. Saisissez un nom

5. Laissez par défaut et cliquez sur Register


Ajout des permissions

Pour tous les sites

1. Allez dans API permissions

2. Cliques sur Add a permission

3. Sélectionnez Microsoft Graph

4. Séléctionnez Application permissions

5. Cochez Sites.ReadWrite

6. Cliquez sur Add permissions

7. Cliquez sur Grant admin consent


Pour un site spécifique

Ici nous souhaitons gérer uniquement un site particulier (plus secure quand même).

Nous procèderons comme ci-dessous:

1. Allez dans API permissions

2. Cliquez sur Add a permission

3. Sélectionnez SharePoint

4. Sélectionnez Application permissions

6. Cochez Sites.Selected

7. Cliquez sur Add permissions

8. Cliquez sur Grant admin consent

10. Ouvrez Graph Explorer ici

11. Choisissez la méthode POST

12. Dans url saisissez l'URL suivante et remplacez yoursharepointsiteid avec l'ID de votre site:

https://graph.microsoft.com/v1.0/sites/yoursharepointsiteid/permissions

13. Allez dans Request body

14. Saisissez le JSON suivant et remplacez avec vos infos:

{
  "roles": ["write"],
  "grantedToIdentities": [{
    "application": {
      "id": "azure app id",
      "displayName": "azure app displayname"
    }
  }]

}

15. Cliquez sur Run query


16. Vous devriez maintenant avoir accès à votre site


Création du secret

1. Allez dans le portail Azure

2. Allez dans votre app Azure

3. Cliquez sur Certificates & secrets

4. Cliquez sur New client secret



Envoyez du contenu dans SharePoint

Nous aurons besoin des infos suivantes:

- L'URL du site SharePoint

- L'ID de l'app Azure

- Le secret lié à votre application


Pour obtenir le script cliquez sur le bouton GitHub ci-dessous: