Recherche de site Web

Comment utiliser PowerShell pour supprimer les fichiers OneDrive trouvés par une recherche de contenu


Récemment, alors que nous travaillions sur certaines recherches de contenu, une question s'est posée sur la manière d'effectuer une suppression sélective des documents OneDrive trouvés dans les recherches. Bien que vous puissiez supprimer des e-mails à l’aide d’une action de recherche de contenu, Office 365 n’inclut pas de méthode pour nettoyer les documents OneDrive trouvés par les recherches de contenu.

La question est de savoir comment supprimer certains documents OneDrive trouvés par une recherche de contenu, mais pas tous. Cet article montre comment utiliser PowerShell pour afficher l'ensemble de fichiers, puis sélectionner les fichiers à supprimer.

Vous êtes curieux de savoir comment utiliser PowerShell pour gérer les stratégies d'accès conditionnel (CA) ? Damian passe en revue les huit applets de commande dans cet article.

Recherche de contenu de base

Tout d’abord, nous devons exécuter une recherche de contenu. Dans le Centre de conformité Microsoft 365, accédez à la section Recherche de contenu et créez une nouvelle recherche. Entrez « Exchange » comme mot-clé pour la recherche et choisissez les emplacements de recherche OneDrive cibles. La recherche démarre et crée un aperçu des résultats. En fonction du nombre d'emplacements de recherche, cette opération peut prendre un certain temps.

Une fois la recherche terminée, nous pouvons examiner les résultats de l'aperçu. Une fois que vous êtes satisfait que la recherche trouve les bons éléments, générez un rapport des résultats en sélectionnant « Exporter le rapport » :

Une fois le rapport exporté, nous pouvons télécharger le fichier CSV généré :

Le téléchargement du rapport nécessite une clé (Figure 3), qui peut être copiée à partir des détails de la recherche et collée dans l'utilitaire Microsoft Export :

Maintenant que la recherche est terminée et le rapport téléchargé, nous pouvons utiliser ce fichier CSV pour déterminer les fichiers OneDrive à supprimer.

Examen des résultats et suppression sélective de OneDrive

La tâche suivante consiste à présenter les données d'exportation du fichier CSV de manière utilisable. Pour ce faire, nous utilisons PowerShell pour regrouper les fichiers par adresse OneDrive de l'utilisateur et permettre au réviseur de sélectionner un, certains, tous ou aucun des fichiers à supprimer. Nous utilisons des applets de commande des modules SharePoint Online et PNP PowerShell pour effectuer des opérations sur les fichiers OneDrive avec les autorisations nécessaires pour exécuter ces tâches. Le script complet est disponible en téléchargement ici depuis GitHub. Maintenant, je vais souligner quelques parties importantes.

Fichier CSV
Notre fichier CSV téléchargé est dans un format comme celui indiqué ci-dessous :

Processus global du script
Le fichier d'exportation n'est pas trié ni dans un format que nous pouvons utiliser, nous devons donc d'abord traiter les données pour générer quelque chose de plus utilisable. Dans le code ci-dessous, nous demandons le nom du fichier CSV, extrayons les éléments clés (Utilisateur et Fichier) du fichier d'entrée et stockons ces données dans une variable appelée $Table. Enfin, triez la variable $Table par utilisateur et stockez les résultats dans une variable appelée $SortedResults :

$CSVName = Read-Host "Please specify a CSV file to import [i.e. Results.csv]"
$CSV = Import-Csv $CSVName
$Table = Foreach ($Line in $CSV) {
    $User = $Line.Location
    $FullFilePath = $Line."Original Path"
    $Type = $Line.Type
    $File = $FullFilePath.Split('/')[-1]
    New-Object -TypeName PSCustomObject -Property @{
        User = $User
        File = $File
    }
}
$SortedResults = $Table | Sort-Object User,File

Connectez-vous à SharePoint Online
Maintenant que nous disposons de données fiables, nous pouvons nous connecter à SharePoint Online. Assurez-vous d'utiliser le nom de locataire correct pour vous connecter au point de terminaison d'administrateur SharePoint Online (entre parenthèses - première ligne de code) :

$SharePointURL = 'https://<tenant domain>-admin.sharepoint.com'
$GAUPN = Read-Host "Please enter your Global Admin account UPN"
$Password = Read-Host -assecurestring "Please password for Global Admin account specified above"
$Credentials = New-Object -typeName System.Management.Automation.PSCredential -argumentlist $GAUPN, $Password
Connect-SPOService -Url $SharePointURL -Credential $Credentials

Une fois connecté, nous pouvons commencer le traitement du fichier CSV. Nous utilisons certaines règles pour traiter les données lorsque nous parcourons les éléments du fichier. Premièrement, la boucle est une boucle foreach, dans laquelle chaque ligne est lue séparément et des actions sont entreprises dans chaque boucle. Dans l'ensemble, les étapes du script que nous allons opérer sont :

  1. La boucle Foreach regroupe chaque ligne d'un seul utilisateur dans une variable.
  2. Des autorisations sont accordées à l'opérateur de script (Site Collection Admin) pour que le script puisse effectuer ses tâches.
  3. Une fois l’autorisation accordée, une connexion est établie avec le compte OneDrive de l’utilisateur.
  4. Une fois connecté, l'ID du fichier est interrogé et stocké car il est nécessaire pour identifier le fichier à supprimer.
  5. Lorsqu'un changement d'utilisateur est détecté, la liste de fichiers actuelle suit ces étapes.
    a. Étape 1 - Afficher les fichiers avec Out-GridView
    b. Étape 2 - Utilisez la sortie d'Out-GridView pour commencer à supprimer les fichiers.
    c. Étape 3 - Autoriser l'opérateur à ne pas supprimer le fichier (option êtes-vous sûr ?)
  6. Une fois les fichiers d'un utilisateur traités, la boucle Foreach passe à l'utilisateur suivant
  7. Les étapes 1 à 6 se poursuivent jusqu'à ce que le dernier utilisateur soit détecté (dernière ligne du fichier CSV)
  8. Le script se termine.

Accès au OneDrive d'un utilisateur
Pour supprimer des fichiers du compte OneDrive d'un utilisateur, nous devons nous connecter directement à son URL OneDrive (dans le fichier CSV). Une fois connectés, nous accordons l’autorisation d’administrateur de la collection de sites. Ces deux tâches peuvent être réalisées avec le script ci-dessous :

Connect-PnPOnline -Url $UserOneDrive -Credentials $Credentials
Set-SPOUser -Site $UserOneDrive -LoginName $GAUPN -IsSiteCollectionAdmin $True

Out-GridView et Remove-PnPItemListItem
Pour l'étape 5 du processus global répertorié ci-dessus, nous devons afficher les fichiers à l'opérateur, stocker les fichiers choisis, puis permettre à l'utilisateur de décider du fichier suppression. Tout d’abord, afficher le fichier à l’aide de Out-GridView :

$FilesToRemove = $RemovalList | Out-GridView -PassThru

• $FilesToRemove : (une routine pour ?) stockera tous les fichiers sélectionnés par l'opérateur.
• $RemovalList : Liste originale de tous les fichiers du CSV
• -PassThru : Cette option permet le retour de options sélectionnées à partir de l'applet de commande Out-GridView, qui seront ensuite stockées dans la variable $FilesToRemove.

Après avoir sélectionné les fichiers, chacun est répertorié et l'opérateur peut choisir si le fichier doit être supprimé :

Write-Host "Removing $File from $User with ID of $SubID ..." -ForegroundColor Yellow
$ConfirmRemoval = Read-Host " Confirm file removal [y or n] "
If ($ConfirmRemoval -eq 'y') {
Remove-PnPListItem -List Documents -Identity $SubID
} Else {
Write-Host " *** FILE WAS NOT DELETED **" -ForegroundColor Yellow
}

Vue opérateur
Maintenant que nous avons examiné certaines sections de code importantes, passons en revue le processus global de suppression du fichier. Après avoir téléchargé le fichier CSV et traité son contenu, nous pouvons l'utiliser comme base pour supprimer des fichiers. Lorsque nous exécutons le script, la première chose est de se connecter au locataire cible. On nous demande également le fichier CSV des résultats que nous avons téléchargé à partir de la recherche. Ensuite, le script affiche les fichiers à vérifier et/ou supprimer à l'aide de la cmdlet Out-GridView :

Après avoir sélectionné certains fichiers, nous pouvons décider de supprimer ou non les fichiers, voici quelques exemples :

Conditions préalables
Avant de pouvoir exécuter le script, vous devez consentir à l'utilisation du module PnP PowerShell, car il utilise l'authentification OAuth. Si nous n'accordons pas notre consentement pour l'application, une erreur comme celle-ci s'affichera :

Connect-PnPOnline : AADSTS65001: The user or administrator has not consented to use the application with ID
'31359c7f-bd7e-475c-86db-fdb8c937548e' named 'PnP Management Shell'. Send an interactive authorization request for this user and resource.

Pour utiliser le module PnP, nous devons suivre ces étapes :

$URL = 'https://<tenant>-my.sharepoint.com/personal/user_yourdomain_com'
Connect-PnPOnline -Url $Url -PnPManagementShell 

L’exécution de ces applets de commande affichera un code d’accès à usage unique à saisir sur https://microsoft.com/devicelogin. Nous pouvons ensuite entrer et choisir un compte avec le droit d'accorder l'autorisation :

Nous devrons ensuite approuver le consentement pour les applets de commande :

La grande liste d'autorisations est due au fait que le module PNP devra accéder à plusieurs charges de travail dans un locataire, de Teams à SharePoint, en passant par Planner et Flow. En tant que tel, le module aura besoin d’un large éventail d’autorisations pour fonctionner. N'oubliez pas que ce consentement permet uniquement d'utiliser le module chez un locataire et que son utilisation peut être restreinte.

Après avoir donné votre consentement, nous pouvons utiliser le module PnP pour nous connecter à OneDrive et gérer les fichiers.

Pourquoi le shell de gestion PNP ?

PNP Management Shell est un ensemble puissant de plus de 500 applets de commande PowerShell qui permettent d'accéder aux objets SharePoint Online, y compris la possibilité de manipuler des fichiers stockés dans des comptes OneDrive. Nous pouvons également supprimer la balise Records à l’aide de la cmdlet Clear-PnPListItemAsRecord. Cette action est la version PowerShell consistant à sélectionner un élément dans une bibliothèque SharePoint et à choisir l'option « Annuler la déclaration de l'enregistrement » disponible dans SharePoint Online.

Audit

D'un point de vue global de suivi, SharePoint Online capture les détails de tout fichier supprimé par le script dans le journal d'audit d'Office 365. Recherchez « Fichier supprimé » et les détails du ou des fichiers supprimés apparaîtront dans le journal.

Conclusion

Le script décrit ici est conçu pour gérer le processus fastidieux de prise de données de rapport pour une recherche de contenu et de les utiliser pour piloter un processus de suppression de document. Il n’existe actuellement aucun équivalent dans le Centre de conformité Microsoft 365. Pour exécuter le script, vous avez besoin d'applets de commande des modules Exchange Online (connecté au point de terminaison de conformité), SharePoint Online et PnP. Enfin, un administrateur doit accorder son consentement pour utiliser les applets de commande du module SharePoint PnP dans le locataire. Toutes ces conditions doivent être remplies avant de travailler avec ce script.

Exemple de code

Afin de vous aider à créer votre propre code pour cette solution, un exemple de code pour le fonctionnement de cette solution a été publié sur GitHub.

Utilisez ce code avec précaution car il effectue plusieurs tâches qui ne devraient être effectuées que par ceux qui comprennent leurs implications :

  • Accorder l’accès à PNP Management Shell à votre locataire
  • Utilisation de Remove-PnPListItem, qui supprimait des fichiers du OneDrive d'un utilisateur
  • Octroi des autorisations SiteCollectionAdmin au OneDrive d’un utilisateur

Articles connexes