Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esse script do PowerShell permite que administradores e gerentes de Descoberta Eletrônica gerem um relatório que contém informações sobre todas as retenções associadas a casos de Descoberta Eletrônica no portal do Microsoft Purview. O relatório contém informações como o nome do caso ao qual uma retenção está associada, os locais de conteúdo que são colocados em espera e se a retenção é baseada em consulta. Se houver ocorrências sem retenções, o script criará um relatório adicional com uma lista de ocorrências sem retenções.
Dica
Comece a usar o Microsoft Security Copilot para explorar novas maneiras de trabalhar de forma mais inteligente e rápida usando o poder da IA. Saiba mais sobre o Microsoft Security Copilot no Microsoft Purview.
O que o relatório de suspensão inclui
O relatório de retenção de caso que o script neste artigo cria contém as seguintes informações sobre cada retenção:
- O nome da retenção e o nome do caso de Descoberta Eletrônica ao qual a retenção está associada.
- Se a retenção está associada a um caso de Descoberta Eletrônica.
- Se o caso de Descoberta Eletrônica está ativo ou fechado.
- Se a retenção está habilitada ou desativada.
- Os membros do caso de Descoberta Eletrônica ao qual a retenção está associada. Os membros da ocorrência podem exibir ou gerenciar uma ocorrência, dependendo das permissões de Descoberta Eletrônica atribuídas.
- A hora e a data em que a ocorrência foi criada.
- Se um caso for encerrado, a pessoa que o encerrou e a hora e a data em que foi encerrado.
- Os locais das caixas de correio do Exchange e sites do SharePoint que estão em espera.
- Se a suspensão for baseada em consulta, a sintaxe da consulta.
- A hora e a data em que a retenção foi criada e a pessoa que a criou.
- A hora e a data em que a retenção foi alterada pela última vez e a pessoa que a alterou.
Administração requisitos e informações de script
- Para gerar um relatório sobre todos os casos de Descoberta Eletrônica em sua organização, você precisa ser um Administrador de Descoberta Eletrônica em sua organização. Se você for um Gerente de Descoberta Eletrônica, o relatório incluirá apenas informações sobre os casos que você pode acessar. Para obter mais informações sobre permissões de Descoberta Eletrônica, consulte Atribuir permissões de Descoberta Eletrônica.
- O script CaseHoldsReport.ps1 tem tratamento mínimo de erros. Sua principal finalidade é criar rapidamente um relatório sobre as retenções associadas aos casos de Descoberta Eletrônica em sua organização.
Importante
Os scripts de exemplo fornecidos neste artigo não são compatíveis com nenhum serviço ou programa de suporte padrão da Microsoft. Os scripts de exemplo são fornecidos COMO ESTÃO sem qualquer tipo de garantia. A Microsoft também se isenta de todas as garantias implícitas, incluindo sem limitações quaisquer garantias aplicáveis de padrões de comercialização ou de adequação a uma finalidade específica. Todos os riscos decorrentes do uso ou da execução da documentação ou scripts de exemplo serão de sua responsabilidade. De modo algum a Microsoft, seus autores ou qualquer outra pessoa envolvida na criação, produção ou veiculação dos scripts serão considerados responsáveis por quaisquer danos (incluindo sem limitações danos por perda de lucros comerciais, interrupção de negócios, perda de informações comerciais ou outras perdas pecuniárias) resultantes do uso ou da incapacidade de uso da documentação ou scripts de exemplo, mesmo que a Microsoft tenha sido alertada sobre a possibilidade de tais danos.
Etapa 1: Conecte-se à Segurança e Conformidade do PowerShell
Primeiro, conecte-se ao PowerShell de Segurança & Conformidade para sua organização. Para obter instruções passo a passo, confira Conectar-se à Segurança e Conformidade do PowerShell .
Etapa 2: Executar o script para relatar retenções associadas a casos de Descoberta Eletrônica
Depois de se conectar ao PowerShell de Segurança & Conformidade, crie e execute o script que coleta informações sobre os casos de Descoberta Eletrônica em sua organização.
Salve o texto a seguir em um arquivo de script do Windows PowerShell usando um sufixo de nome de arquivo de
.ps1; por exemplo,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 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 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 endNa sessão do Windows PowerShell aberta na Etapa 1, acesse a pasta onde você salvou o script.
Execute o script; Por exemplo:
.\CaseHoldsReport.ps1O script solicita uma pasta de destino para salvar o relatório.
Digite o nome completo do caminho da pasta na qual o relatório será salvo e pressione Enter.
Dica
Para salvar o relatório na mesma pasta em que o script está localizado, digite um ponto (".") quando solicitado para uma pasta de destino. Para salvar o relatório em uma subpasta na pasta onde o script está localizado, basta digitar o nome da subpasta.
O script começa a coletar informações sobre todos os casos de Descoberta Eletrônica em sua organização. Não acesse o arquivo de relatório enquanto o script estiver em execução. Após a conclusão do script, uma mensagem de confirmação será exibida na sessão do Windows PowerShell. Depois que essa mensagem for exibida, você poderá acessar o relatório na pasta que você especificou quando solicitado para uma pasta de destino. O nome do arquivo do relatório é
CaseHoldsReport<DateTimeStamp>.csv.Além disso, o script cria um relatório com uma lista de ocorrências que não têm nenhuma retenção. O nome do arquivo para este relatório é
CaseswithNoHolds<DateTimeStamp>.csv.Aqui está um exemplo de execução do
CaseHoldsReport.ps1script.