Utiliser la recherche de contenu pour rechercher une liste d’utilisateurs dans la boîte aux lettres et le site OneDrive

Conseil

eDiscovery (préversion) est désormais disponible dans le nouveau portail Microsoft Purview. Pour en savoir plus sur l’utilisation de la nouvelle expérience eDiscovery, consultez En savoir plus sur eDiscovery (préversion).

Sécurité & Conformité PowerShell fournit un certain nombre d’applets de commande qui vous permettent d’automatiser des tâches eDiscovery fastidieuses. Actuellement, la création d’une recherche de contenu dans le portail de conformité Microsoft Purview pour rechercher un grand nombre d’emplacements de contenu de consignataires prend du temps et de la préparation. Avant de créer une recherche, vous devez collecter l’URL de chaque site OneDrive Entreprise, puis ajouter chaque boîte aux lettres et le site OneDrive Entreprise à la recherche. Dans les versions ultérieures, cela sera plus facile à faire dans le portail de conformité. En attendant, vous pouvez utiliser le script de cet article pour automatiser ce processus. Ce script vous invite à entrer le nom du domaine MySite de votre organisation (par exemple, contoso dans l’URL https://contoso-my.sharepoint.com), une liste d’adresses e-mail des utilisateurs, le nom de la nouvelle recherche de contenu et la requête de recherche à utiliser. Le script obtient l’URL OneDrive Entreprise pour chaque utilisateur de la liste, puis crée et démarre une recherche de contenu qui recherche dans la boîte aux lettres et le site OneDrive Entreprise pour chaque utilisateur de la liste, à l’aide de la requête de recherche que vous fournissez.

Autorisations et informations de script

Importante

Microsoft vous recommande d’utiliser des rôles disposant du moins d’autorisations. La réduction du nombre d’utilisateurs dotés du rôle Administrateur général permet d’améliorer la sécurité de votre organisation. En savoir plus sur les rôles et autorisations Microsoft Purview.

  • Vous devez être membre du groupe de rôles Gestionnaire eDiscovery dans le portail Microsoft Purview ou le portail de conformité et un administrateur général SharePoint pour exécuter le script à l’étape 3.
  • Veillez à enregistrer la liste des utilisateurs que vous créez à l’étape 2 et le script de l’étape 3 dans le même dossier. Cela facilite l’exécution du script.
  • Le script inclut une gestion minimale des erreurs. Son objectif principal est de rechercher rapidement et facilement dans la boîte aux lettres et le site OneDrive de chaque utilisateur.
  • Les exemples de scripts fournis dans cet article ne sont pas pris en charge par les services ou programmes d’assistance standard de Microsoft. Les exemples de scripts sont fournis tels quels, sans garantie d’aucune sorte. Microsoft Corporation décline aussi toute garantie implicite, y compris et sans limitation, les garanties implicites de qualité marchande ou d’adéquation à un usage particulier. La totalité des risques découlant de l’utilisation ou de la performance des exemples de scripts et de la documentation repose sur vous. En aucun cas Microsoft, ses auteurs ou quiconque impliqué dans la création, la production ou la livraison des scripts ne sera responsable de tous dommages quels qu’ils soient (y compris, sans limitation, les dommages pour perte de profits, interruption d’activité, perte d’informations commerciales ou toute autre perte pécuniaire) découlant de l’utilisation ou de l’impossibilité d’utiliser les exemples de scripts ou la documentation, même si Microsoft a été informé de la possibilité de tels dommages.

Étape 1 : installer SharePoint Online Management Shell

La première étape consiste à installer SharePoint Online Management Shell. Vous n’avez pas besoin d’utiliser l’interpréteur de commandes dans cette procédure, mais vous devez l’installer, car il contient les prérequis requis par le script que vous exécutez à l’étape 3. Ces prérequis permettent au script de communiquer avec SharePoint pour obtenir les URL des sites OneDrive.

Accédez à Configurer l’environnement SharePoint Online Management Shell et effectuez les étapes 1 et 2 pour installer SharePoint Online Management Shell.

Étape 2 : Générer une liste d’utilisateurs

Le script de l’étape 3 crée une recherche de contenu pour rechercher dans les boîtes aux lettres et les comptes OneDrive une liste d’utilisateurs. Vous pouvez simplement taper les adresses e-mail dans un fichier texte, ou exécuter une commande dans PowerShell pour obtenir une liste d’adresses e-mail et les enregistrer dans un fichier (situé dans le même dossier que celui dans lequel vous allez enregistrer le script à l’étape 3).

Voici une commande Exchange Online PowerShell que vous pouvez exécuter pour obtenir la liste des adresses e-mail de tous les utilisateurs de votre organisation et l’enregistrer dans un fichier texte nommé Users.txt.

Get-Mailbox -ResultSize unlimited -Filter { RecipientTypeDetails -eq 'UserMailbox'} | Select-Object PrimarySmtpAddress > Users.txt

Après avoir exécuté cette commande, veillez à ouvrir le fichier et à supprimer l’en-tête qui contient le nom de la propriété, PrimarySmtpAddress. Le fichier texte doit simplement contenir une liste d’adresses e-mail, et rien d’autre. Assurez-vous qu’il n’y a pas de lignes vides avant ou après la liste des adresses e-mail.

Lorsque vous exécutez le script dans cette étape, il vous invite à entrer les informations suivantes. Veillez à disposer de ces informations avant d’exécuter le script.

  • Vos informations d’identification utilisateur : le script utilise vos informations d’identification pour accéder à SharePoint afin d’obtenir les URL OneDrive et de se connecter à PowerShell sécurité & conformité.

  • Nom de votre domaine MySite : le domaine MySite est le domaine qui contient tous les sites OneDrive de votre organisation. Par exemple, si l’URL de votre domaine MySite est https://contoso-my.sharepoint.com, vous devez entrer contoso lorsque le script vous invite à entrer le nom de votre domaine MySite.

  • Chemin d’accès du fichier texte de l’étape 2 : nom du chemin d’accès du fichier texte que vous avez créé à l’étape 2. Si le fichier texte et le script se trouvent dans le même dossier, entrez le nom du fichier texte. Sinon, entrez le chemin d’accès complet du fichier texte.

  • Nom de la recherche de contenu : nom de la recherche de contenu qui sera créée par le script.

  • Requête de recherche : la requête de recherche utilisée avec la recherche de contenu est créée et exécutée. Pour plus d’informations sur les requêtes de recherche, consultez Requêtes par mot clé et conditions de recherche pour eDiscovery.

Pour exécuter le script :

  1. Enregistrez le texte suivant dans un fichier de script Windows PowerShell en utilisant le suffixe de nom de fichier .ps1 ; par exemple, SearchEXOOD4B.ps1. Enregistrez le fichier dans le dossier où vous avez enregistré la liste des utilisateurs à l’étape 2.

    # This PowerShell script will prompt you for the following information:
    #    * Your user credentials
    #    * The name of your organization's MySite domain
    #    * The pathname for the text file that contains a list of user email addresses
    #    * The name of the Content Search that will be created
    #    * The search query string
    # The script will then:
    #    * Find the OneDrive site for each user in the text file
    #    * Create and start a Content Search using the above information
    # Get user credentials
    if (!$credentials)
    {
        $credentials = Get-Credential
    }
    # Get the user's MySite domain name.  We use this to create the admin URL and root URL for OneDrive
    $mySiteDomain = Read-Host "What is your organization's MySite domain?  For example,  'contoso' for 'https://contoso-my.sharepoint.com'"
    $AdminUrl = "https://$mySiteDomain-admin.sharepoint.com"
    $mySiteUrlRoot = "https://$mySiteDomain-my.sharepoint.com"
    # Get other required information
    $inputfile = read-host "Enter the file name of the text file that contains the email addresses for the users you want to search"
    $searchName = Read-Host "Enter the name for the new search"
    $searchQuery = Read-Host "Enter the search query you want to use"
    $emailAddresses = Get-Content $inputfile | where {$_ -ne ""}  | foreach{ $_.Trim() }
    # Connect to Security & Compliance PowerShell
    if (!$s -or !$a)
    {
        Import-Module ExchangeOnlineManagement
        Connect-IPPSSession
    }
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to https://go.microsoft.com/fwlink/p/?LinkId=255251
    if (!$SharePointClient -or !$SPRuntime -or !$SPUserProfile)
    {
        $SharePointClient = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
        $SPRuntime = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
        $SPUserProfile = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
        if (!$SharePointClient)
        {
            Write-Error "SharePoint Online Management Shell isn't installed, please install from: https://go.microsoft.com/fwlink/p/?LinkId=255251 and then run this script again"
            return;
        }
    }
    if (!$spCreds)
    {
        $spCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName, $credentials.Password)
    }
    # Add the path of the User Profile Service to the SPO admin URL, then create a new webservice proxy to access it
    $proxyaddr = "$AdminUrl/_vti_bin/UserProfileService.asmx?wsdl"
    $UserProfileService= New-WebServiceProxy -Uri $proxyaddr -UseDefaultCredential False
    $UserProfileService.Credentials = $credentials
    # Take care of auth cookies
    $strAuthCookie = $spCreds.GetAuthenticationCookie($AdminUrl)
    $uri = New-Object System.Uri($AdminUrl)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    Write-Host "Getting each user's OneDrive URL"
    $urls = @()
    foreach($emailAddress in $emailAddresses)
    {
        try
        {
            $prop = $UserProfileService.GetUserProfileByName("i:0#.f|membership|$emailAddress") | Where-Object { $_.Name -eq "PersonalSpace" }
            $url = $prop.values[0].value
            $furl = $mySiteUrlRoot + $url
            $urls += $furl
            Write-Host "-$emailAddress => $furl"
        }
        catch
        {
            Write-Warning "Could not locate OneDrive for $emailAddress"
        }
    }
    Write-Host "Creating and starting the search"
    $search = New-ComplianceSearch -Name $searchName -ExchangeLocation $emailAddresses -SharePointLocation $urls -ContentMatchQuery $searchQuery
    # Finally, start the search and then display the status
    if($search)
    {
        Start-ComplianceSearch $search.Name
        Get-ComplianceSearch $search.Name
    }
    
  2. Ouvrez Windows PowerShell et accédez au dossier dans lequel vous avez enregistré le script et la liste des utilisateurs de l’étape 2.

  3. Démarrez le script ; par exemple:

    .\SearchEXOOD4B.ps1
    
  4. Lorsque vous êtes invité à entrer vos informations d’identification, entrez votre adresse e-mail et votre mot de passe, puis sélectionnez OK.

  5. Entrez les informations suivantes lorsque vous y êtes invité par le script. Tapez chaque information, puis appuyez sur Entrée.

    • Nom de votre domaine MySite.

    • Nom du chemin d’accès du fichier texte qui contient la liste des utilisateurs.

    • Nom de la recherche de contenu.

    • La requête de recherche (laissez ce champ vide pour renvoyer tous les éléments dans les emplacements de contenu).

    Le script obtient les URL de chaque site OneDrive, puis crée et démarre la recherche. Vous pouvez exécuter l’applet de commande Get-ComplianceSearch dans Security & Compliance PowerShell pour afficher les statistiques et les résultats de la recherche, ou vous pouvez accéder à la page Recherche de contenu dans le portail de conformité pour afficher des informations sur la recherche.