Share via


Utiliser un script pour créer un rapport sur les conservations dans les cas d’eDiscovery

Le script de cet article permet aux administrateurs eDiscovery et aux gestionnaires eDiscovery de générer un rapport qui contient des informations sur toutes les conservations associées aux cas eDiscovery (Standard) et eDiscovery (Premium) dans le portail de conformité Microsoft Purview. Le rapport contient des informations telles que le nom du cas où une conservation est associée, les emplacements de contenu mis en attente et si la conservation est basée sur des requêtes. S’il existe des cas qui n’ont pas de conservation, le script crée un rapport supplémentaire avec une liste de cas sans conservation.

Consultez la section Plus d’informations pour obtenir une description détaillée des informations incluses dans le rapport.

Conseil

Si vous n’êtes pas un client E5, utilisez la version d’évaluation de 90 jours des solutions Microsoft Purview pour découvrir comment des fonctionnalités Supplémentaires purview peuvent aider vos organization à gérer les besoins en matière de sécurité et de conformité des données. Commencez dès maintenant au hub d’essais portail de conformité Microsoft Purview. En savoir plus sur les conditions d’inscription et d’essai.

Administration exigences et informations de script

  • Pour générer un rapport sur tous les cas eDiscovery dans votre organization, vous devez être administrateur eDiscovery dans votre organization. Si vous êtes un gestionnaire eDiscovery, le rapport inclut uniquement des informations sur les cas auxquels vous pouvez accéder. Pour plus d’informations sur les autorisations eDiscovery, consultez Attribuer des autorisations eDiscovery.
  • Le script de cet article a une gestion minimale des erreurs. L’objectif principal est de créer rapidement un rapport sur les conservations associées aux cas eDiscovery dans votre organization.
  • 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 : Connectez-vous à Security & Compliance PowerShell

La première étape consiste à se connecter à Security & Compliance PowerShell pour votre organisation. Pour consulter des instructions détaillées, consultez Se connecter à Security & Compliance PowerShell.

Étape 2 : Exécuter le script pour créer un rapport sur les conservations associées aux cas eDiscovery

Une fois que vous êtes connecté à Security & Compliance PowerShell, l’étape suivante consiste à créer et exécuter le script qui collecte des informations sur les cas eDiscovery dans votre organization.

  1. Enregistrez le texte suivant dans un fichier de script Windows PowerShell en utilisant le suffixe de nom de fichier .ps1, par exemple, CaseHoldsReport.ps1.

     #script begin
     " "
     write-host "***********************************************"
     write-host "Security & Compliance Center   " -foregroundColor yellow -backgroundcolor darkgreen
     write-host "eDiscovery cases - Holds report         " -foregroundColor yellow -backgroundcolor darkgreen
     write-host "***********************************************"
     " "
    
     #prompt users to specify a path to store the output files
     $time = get-date -Format dd-MM-yyyy_hh.mm
     $Path = Read-Host 'Enter a folder path to save the report to a .csv file (filename is created automatically)'
     $outputpath = $Path + '\' + 'CaseHoldsReport' + ' ' + $time + '.csv'
     $noholdsfilepath = $Path + '\' + 'CaseswithNoHolds' + $time + '.csv'
    
     #add case details to the csv file
     function add-tocasereport {
         Param([string]$casename,
             [String]$casetype,
             [String]$casestatus,
             [datetime]$casecreatedtime,
             [string]$casemembers,
             [datetime]$caseClosedDateTime,
             [string]$caseclosedby,
             [string]$holdname,
             [String]$Holdenabled,
             [string]$holdcreatedby,
             [string]$holdlastmodifiedby,
             [string]$ExchangeLocation,
             [string]$sharePointlocation,
             [string]$ContentMatchQuery,
             [datetime]$holdcreatedtime,
             [datetime]$holdchangedtime,
             [string]$holdstatus,
             [string]$holderror
         )
    
         $addRow = New-Object PSObject
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case name" -Value $casename
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case type" -Value $casetype
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case status" -Value $casestatus
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case members" -Value $casemembers
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case created time" -Value $casecreatedtime
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case closed time" -Value $caseClosedDateTime
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case closed by" -Value $caseclosedby
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold name" -Value $holdname
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold enabled" -Value $Holdenabled
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold created by" -Value $holdcreatedby
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold last changed by" -Value $holdlastmodifiedby
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Exchange locations" -Value  $ExchangeLocation
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "SharePoint locations" -Value $sharePointlocation
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold query" -Value $ContentMatchQuery
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold created time (UTC)" -Value $holdcreatedtime
         Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold changed time (UTC)" -Value $holdchangedtime
         Add-Member -InputObject $addrow -MemberType NoteProperty -Name "Hold Status" -Value $holdstatus
         Add-Member -InputObject $addrow -MemberType NoteProperty -Name "Hold Error" -Value $holderror
    
         $allholdreport = $addRow | Select-Object "Case name", "Case type", "Case status", "Hold name", "Hold enabled", "Case members", "Case created time", "Case closed time", "Case closed by", "Exchange locations", "SharePoint locations", "Hold query", "Hold created by", "Hold created time (UTC)", "Hold last changed by", "Hold changed time (UTC)", "Hold Status", "Hold Error"
         $allholdreport | export-csv -path $outputPath -notypeinfo -append -Encoding ascii
     }
    
     #get information on the cases and pass values to the case report function
     " "
     write-host "Gathering a list of eDiscovery (Standard) cases and holds..."
     " "
     $edc = Get-ComplianceCase -ErrorAction SilentlyContinue
     foreach ($cc in $edc) {
         write-host "Working on case :" $cc.name
         if ($cc.status -eq 'Closed') {
             $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';'
             add-tocasereport -casename $cc.name -casetype $cc.casetype -casestatus $cc.Status -caseclosedby $cc.closedby -caseClosedDateTime $cc.ClosedDateTime -casemembers $cmembers
         }
         else {
             $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';'
             $policies = Get-CaseHoldPolicy -Case $cc.Name | % { Get-CaseHoldPolicy $_.Name -Case $_.CaseId -DistributionDetail }
             if ($policies -ne $NULL) {
                 foreach ($policy in $policies) {
                     $rule = Get-CaseHoldRule -Policy $policy.name
                     add-tocasereport -casename $cc.name -casetype $cc.casetype -casemembers $cmembers -casestatus $cc.Status -casecreatedtime $cc.CreatedDateTime -holdname $policy.name -holdenabled $policy.enabled -holdcreatedby $policy.CreatedBy -holdlastmodifiedby $policy.LastModifiedBy -ExchangeLocation (($policy.exchangelocation.name) -join ';') -SharePointLocation (($policy.sharePointlocation.name) -join ';') -ContentMatchQuery $rule.ContentMatchQuery -holdcreatedtime $policy.WhenCreatedUTC -holdchangedtime $policy.WhenChangedUTC -holdstatus $policy.DistributionStatus -holderror $policy.DistributionResults
                 }
             }
             else {
                 Write-Host "No hold policies found in case:" $cc.name -foregroundColor 'Yellow'
                 " "
                 [string]$cc.name | out-file -filepath $noholdsfilepath -append
             }
         }
     }
    
     #get information on the cases and pass values to the case report function
     " "
     write-host "Gathering a list of eDiscovery (Premium) cases and holds..."
     " "
     $edc = Get-ComplianceCase -CaseType Advanced -ErrorAction SilentlyContinue
     foreach ($cc in $edc) {
         write-host "Working on case :" $cc.name
         if ($cc.status -eq 'Closed') {
             $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';'
             add-tocasereport -casename $cc.name -casestatus $cc.Status -casetype $cc.casetype -caseclosedby $cc.closedby -caseClosedDateTime $cc.ClosedDateTime -casemembers $cmembers
         }
         else {
             $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';'
             $policies = Get-CaseHoldPolicy -Case $cc.Name | % { Get-CaseHoldPolicy $_.Name -Case $_.CaseId -DistributionDetail }
             if ($policies -ne $NULL) {
                 foreach ($policy in $policies) {
                     $rule = Get-CaseHoldRule -Policy $policy.name
                     add-tocasereport -casename $cc.name -casetype $cc.casetype -casemembers $cmembers -casestatus $cc.Status -casecreatedtime $cc.CreatedDateTime -holdname $policy.name -holdenabled $policy.enabled -holdcreatedby $policy.CreatedBy -holdlastmodifiedby $policy.LastModifiedBy -ExchangeLocation (($policy.exchangelocation.name) -join ';') -SharePointLocation (($policy.sharePointlocation.name) -join ';') -ContentMatchQuery $rule.ContentMatchQuery -holdcreatedtime $policy.WhenCreatedUTC -holdchangedtime $policy.WhenChangedUTC -holdstatus $policy.DistributionStatus -holderror $policy.DistributionResults
    
                 }
             }
             else {
                 write-host "No hold policies found in case:" $cc.name -foregroundColor 'Yellow'
                 " "
                 [string]$cc.name | out-file -filepath $noholdsfilepath -append
             }
         }
     }
    
     " "
     Write-host "Script complete! Report files saved to this folder: '$Path'"
     " "
     #script end
    
  2. Dans la session Windows PowerShell qui s’est ouverte à l’étape 1, accédez au dossier dans lequel vous avez enregistré le script.

  3. Exécutez le script ; par exemple :

    .\CaseHoldsReport.ps1
    

    Le script demande un dossier cible dans lequel enregistrer le rapport.

  4. Tapez le chemin d’accès complet du dossier dans lequel enregistrer le rapport, puis appuyez sur Entrée.

    Conseil

    Pour enregistrer le rapport dans le même dossier que celui dans lequel se trouve le script, tapez un point (« . ») lorsque vous êtes invité à entrer un dossier cible. Pour enregistrer le rapport dans un sous-dossier dans le dossier où se trouve le script, tapez simplement le nom du sous-dossier.

    Le script commence à collecter des informations sur tous les cas eDiscovery dans votre organization. N’accédez pas au fichier de rapport pendant l’exécution du script. Une fois le script terminé, un message de confirmation s’affiche dans la session Windows PowerShell. Une fois ce message affiché, vous pouvez accéder au rapport dans le dossier que vous avez spécifié à l’étape 4. Le nom de fichier du rapport est CaseHoldsReport<DateTimeStamp>.csv.

    En outre, le script crée également un rapport avec une liste de cas qui n’ont pas de conservation. Le nom de fichier de ce rapport est CaseswithNoHolds<DateTimeStamp>.csv.

    Voici un exemple d’exécution du script CaseHoldsReport.ps1.

    Sortie après l’exécution du script CaseHoldsReport.ps1.

Informations supplémentaires

Le rapport de conservation du cas créé lorsque vous exécutez le script dans cet article contient les informations suivantes sur chaque conservation. Comme expliqué précédemment, vous devez être administrateur eDiscovery pour retourner des informations pour toutes les conservations dans votre organization. Pour plus d’informations sur les conservations de cas, consultez cas eDiscovery.

  • Nom de la conservation et nom du cas eDiscovery auquel la conservation est associée.
  • Indique si la conservation est associée à un cas eDiscovery (Standard) ou eDiscovery (Premium).
  • Indique si le cas eDiscovery est actif ou fermé.
  • Indique si la conservation est activée ou désactivée.
  • Membres du cas eDiscovery auquel la conservation est associée. Les membres de cas peuvent afficher ou gérer un cas, en fonction des autorisations eDiscovery qui leur ont été attribuées.
  • Heure et date de création du cas.
  • Si un dossier est fermé, la personne qui l’a fermé, ainsi que l’heure et la date de fermeture.
  • Emplacements des boîtes aux lettres Exchange et des sites SharePoint en attente.
  • Si la conservation est basée sur une requête, la syntaxe de requête.
  • Heure et date de création de la conservation et de la personne qui l’a créée.
  • Heure et date de la dernière modification de la conservation et de la personne qui l’a modifiée.