Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Скрипт, приведенный в этой статье, позволяет администраторам обнаружения электронных данных и менеджерам по обнаружению электронных данных создавать отчет, содержащий сведения обо всех удержаниях, связанных с случаями обнаружения электронных данных на портале Microsoft Purview. Отчет содержит такие сведения, как имя дела, с которым связано удержание, расположение содержимого, которое помещается на удержание, а также о том, основано ли удержание на основе запроса. Если есть случаи, в которых нет удержаний, скрипт создает дополнительный отчет со списком случаев без удержания.
Совет
Приступая к работе с Microsoft Security Copilot изучить новые способы интеллектуальной и быстрой работы с использованием возможностей ИИ. Дополнительные сведения о Microsoft Security Copilot в Microsoft Purview.
Сведения об отчете
В случае содержится отчет, который создается скриптом в этой статье, содержит следующие сведения о каждом удержании:
- Имя удержания и имя дела обнаружения электронных данных, с которым связано удержание.
- Связано ли удержание с делом обнаружения электронных данных.
- Является ли дело обнаружения электронных данных активным или закрытым.
- Включено или отключено удержание.
- Члены дела обнаружения электронных данных, с которым связано удержание. Участники дела могут просматривать дело или управлять им в зависимости от назначенных разрешений на обнаружение электронных данных.
- Время и дата создания дела.
- Если дело закрыто, лицо, закрывавшего его, а также время и дату его закрытия.
- Расположения почтовых ящиков Exchange и сайтов SharePoint, которые находятся на удержании.
- Если удержание основано на запросе, используется синтаксис запроса.
- Время и дата создания удержания и лицо, создавшего его.
- Время и дата последнего изменения удержания и лицо, изменив его.
требования к Администратор и сведения о скрипте
- Чтобы создать отчет по всем случаям обнаружения электронных данных в организации, необходимо быть администратором обнаружения электронных данных в организации. Если вы являетесь диспетчером обнаружения электронных данных, отчет содержит только сведения о случаях, к которым вы можете получить доступ. Дополнительные сведения о разрешениях на обнаружение электронных данных см. в разделе Назначение разрешений на обнаружение электронных данных.
- Скрипт, приведенный в этой статье, имеет минимальную обработку ошибок. Его основная цель — быстро создать отчет о удержаниях, связанных с случаями обнаружения электронных данных в вашей организации.
Важно!
Примеры сценариев, приведенные в данной статье, не поддерживаются ни одной из стандартных программ и служб технической поддержки Майкрософт. Примеры сценариев приводятся "как есть", без каких-либо гарантий. Кроме того, корпорация Майкрософт отказывается от всех подразумеваемых гарантий, включая, но не ограничиваясь указанным, все подразумеваемые гарантии пригодности для продажи или определенной цели. Все риски, возникающие в результате использования примеров сценариев и документации, берет на себя пользователь. Корпорация Майкрософт, ее штатные авторы и другие лица, принимающие участие в создании, подготовке и выпуске сценариев, ни при каких обстоятельствах не несут ответственность за какой-либо ущерб (в том числе, ущерб, вызванный потерей доходов предприятия, остановкой его работы, потерей бизнес-данных и другими материальными потерями), вызванный использованием или неспособностью использовать примеры сценариев и документацию, даже если корпорации Майкрософт известно о возможности нанесения такого ущерба.
Шаг 1. Подключение к PowerShell в Центре безопасности и соответствия требованиям
Сначала подключитесь к PowerShell для обеспечения безопасности & соответствия требованиям для вашей организации. Пошаговые инструкции см. в статье Подключение к PowerShell в Центре безопасности и соответствия требованиям.
Шаг 2. Запустите скрипт, чтобы сообщить о удержаниях, связанных с случаями обнаружения электронных данных
После подключения к PowerShell для обеспечения соответствия требованиям безопасности & создайте и запустите сценарий, который собирает сведения о случаях обнаружения электронных данных в вашей организации.
Сохраните следующий текст в файл скрипта Windows PowerShell с помощью суффикса
.ps1имени файла , например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 endВ сеансе Windows PowerShell, открывшемся на шаге 1, перейдите в папку, в которой вы сохранили скрипт.
Запустите скрипт; Например:
.\CaseHoldsReport.ps1Сценарий запрашивает целевую папку для сохранения отчета.
Введите полный путь к папке для сохранения отчета, а затем нажмите клавишу ВВОД.
Совет
Чтобы сохранить отчет в той же папке, в которую находится скрипт, введите точку (".") при появлении запроса в целевой папке. Чтобы сохранить отчет во вложенной папке в папке, где находится скрипт, просто введите имя вложенной папки.
Скрипт начинает собирать сведения обо всех случаях обнаружения электронных данных в вашей организации. Не обращаться к файлу отчета во время выполнения скрипта. После завершения скрипта в сеансе Windows PowerShell отображается сообщение с подтверждением. После отображения этого сообщения доступ к отчету можно получить в папке, указанной на шаге 4. Имя файла отчета —
CaseHoldsReport<DateTimeStamp>.csv.Кроме того, скрипт создает отчет со списком случаев, в которых нет удержаний. Имя файла для этого отчета —
CaseswithNoHolds<DateTimeStamp>.csv.Ниже приведен пример выполнения скрипта
CaseHoldsReport.ps1.