Использование сценария для помещения пользователей на удержание в рамках дела обнаружения электронных данных в Центре безопасности и соответствия требованиям Office 365

В Центре безопасности и соответствия требованиям Office 365 доступно множество командлетов Windows PowerShell, с помощью которых можно автоматизировать затратные по времени задачи, связанные с созданием дел обнаружения электронных данных и управлением ими. В настоящее время, чтобы поместить на удержание большое число расположений хранимого контента, используя средство управления делами обнаружения электронных данных в Центре безопасности и соответствия требованиям, нужно потратить много времени и выполнить подготовительные действия. Например, прежде чем создавать удержание, необходимо получить URL-адреса всех сайтов OneDrive для бизнеса, которые требуется в него включить. Затем нужно добавить в удержание почтовый ящик и сайт OneDrive для бизнеса каждого пользователя, которого вы хотите поместить на удержание. В будущих выпусках для выполнения этой задачи в Центре безопасности и соответствия требованиям потребуется меньше усилий. До этого момента вы можете использовать сценарий из этой статьи для автоматизации данного процесса.

Сценарий запрашивает имя домена личных сайтов организации (например, contoso в URL-адресе https://contoso-my.sharepoint.com), имя существующего дела обнаружения электронных данных, имя нового удержания, связанного с делом, список адресов электронной почты пользователей, которых вы хотите поместить на удержание, и поисковый запрос, если вы хотите создать удержание на основе запроса. Затем сценарий получает URL-адрес сайта OneDrive для бизнеса для каждого пользователя в списке, создает новое удержание и добавляет в него почтовые ящики и сайты OneDrive для бизнеса всех этих пользователей. Сценарий также создает файлы журнала, которые содержат сведения о новом удержании.

Ниже описано, что нужно для этого сделать.

Шаг 1. Установка командной консоли SharePoint Online

Шаг 2. Создание списка пользователей

Шаг 3. Запуск сценария для создания удержания и добавления пользователей

Подготовка

  • Чтобы запустить сценарий на шаге 3, вы должны быть членом группы ролей "Диспетчер по обнаружению электронных данных" в Центре безопасности и соответствия требованиям и глобальным администратором SharePoint Online. Дополнительные сведения см. в статье Назначение разрешений для обнаружения электронных данных в Центре безопасности и соответствия требованиям Office 365.

  • Добавить к удержанию, связанному с делом обнаружения электронных данных в Центре безопасности и соответствия требованиям, можно не более 1000 почтовых ящиков и 100 сайтов. Предположим, что у каждого пользователя, которого вы хотите поместить на удержание, есть сайт OneDrive для бизнеса. В этом случае с помощью сценария, приведенного в данной статье, можно добавить до 100 пользователей.

  • Сохраните список пользователей, который вы создадите на шаге 2, и сценарий для шага 3 в одной и той же папке. Это упростит запуск сценария.

  • Сценарий добавляет список пользователей в новое удержание, связанное с существующим делом. Дело, с которым вы хотите связать удержание, должно быть создано до запуска сценария.

  • В сценарии реализована минимальная обработка ошибок. Его основное назначение — помочь вам быстро и легко поместить на удержание почтовый ящик и сайт OneDrive для бизнеса каждого пользователя.

  • Примеры сценариев, содержащиеся в этой статье, не поддерживаются стандартными программами и службами поддержки Майкрософт. Они предоставляются как есть безо всяких гарантий. Кроме того, корпорация Майкрософт отказывается от всех подразумеваемых гарантий, включая, но не ограничиваясь указанным, все подразумеваемые гарантии пригодности для продажи или определенной цели. Все риски, возникающие в результате использования примеров сценариев и документации, берет на себя пользователь. Корпорация Майкрософт, авторы или другие люди, участвовавшие в создании, разработке и предоставлении сценариев, ни при каких обстоятельствах не несут ответственности за любой ущерб (включая, но не ограничиваясь указанным, ущерб в результате потери прибыли, перерыва в работе, потери бизнес-информации или другой материальный ущерб), вызванный использованием примеров сценариев или документации либо невозможностью их использовать, даже если корпорация Майкрософт была уведомлена о возможности такого ущерба.

К началу

Шаг 1. Установка командной консоли SharePoint Online

Прежде всего нужно установить на локальном компьютере командную консоль SharePoint Online, если вы не сделали этого раньше. Вы можете не использовать ее в этой процедуре, но ее требуется установить, так как она содержит элементы, необходимые для запуска сценария на шаге 3. Они обеспечивают подключение сценария к SharePoint Online для получения URL-адресов сайтов OneDrive для бизнеса.

Откройте статью о настройке среды Windows PowerShell командной консоли SharePoint Online и выполните шаги 1 и 2, чтобы установить командную консоль SharePoint Online на локальном компьютере.

К началу

Шаг 2. Создание списка пользователей

На шаге 3 сценарий создает удержание, связанное с делом обнаружения электронных данных, и добавляет в него почтовые ящики и сайты OneDrive для бизнеса определенных пользователей. Вы можете просто ввести адреса электронной почты в текстовый файл или выполнить команду в Windows PowerShell, чтобы получить список адресов и сохранить их в файле (в той же папке, в которой вы сохраните сценарий на шаге 3).

Чтобы получить список электронных адресов всех пользователей в организации и сохранить его в текстовом файле с именем HoldUsers.txt, можно воспользоваться такой командой PowerShell (которую нужно выполнить с помощью удаленной оболочки PowerShell, подключенной к организации Exchange Online):

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

После выполнения этой команды откройте текстовый файл и удалите заголовок, содержащий имя свойства (PrimarySmtpAddress). Затем удалите адреса электронной почты всех пользователей, кроме тех, которых вы хотите добавить в удержание, создаваемое на шаге 3. Убедитесь в том, что перед списком адресов электронной почты и после него нет пустых строк.

К началу

Шаг 3. Запуск сценария для создания удержания и добавления пользователей

При запуске сценария на этом этапе вам будет предложено ввести указанные ниже сведения. Приготовьте их перед выполнением сценария.

  • Учетные данные пользователя.   Сценарий использует ваши учетные данные для доступа к Центру безопасности и соответствия требованиям с помощью удаленной оболочки PowerShell. Эти учетные данные также используются для доступа к SharePoint Online с целью получения URL-адресов OneDrive для бизнеса для пользователей из списка.

  • Имя домена личных сайтов.   Домен личных сайтов — это домен, который содержит все сайты OneDrive для бизнеса в организации. Например, если URL-адресом вашего домена личных сайтов является https://contoso-my.sharepoint.com, при запросе имени домена следует ввести contoso.

  • Имя дела.   Это название существующего дела. Сценарий создаст новое удержание, связанное с этим делом.

  • Имя удержания.   Это название удержания, которое будет создано и связано с указанным делом при выполнении сценария.

  • Поисковый запрос для удержания на основе запроса.   Вы можете создать удержание на основе запроса. В этом случае на удержание будет помещен только контент, соответствующий заданным условиям поиска. Чтобы поместить на удержание весь контент, в ответ на просьбу задать поисковый запрос просто нажмите клавишу ВВОД.

  • Следует ли включить удержание.   Вы можете выбрать, что должен сделать сценарий: просто создать удержание или еще и включить его. Если вы не включите удержание с помощью сценария, то сможете сделать это позже в Центре безопасности и соответствия требованиям. Также можно воспользоваться такими командами PowerShell:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
  • Имя текстового файла со списком пользователей.   Это текстовый файл, созданный на шаге 2 и содержащий список пользователей, которых нужно добавить в удержание. Если файл хранится в той же папке, что и сценарий, введите только его имя (например, HoldUsers.txt). Если текстовый файл находится в другой папке, введите полный путь к нему.

После ввода всех необходимых сведений вам останется только запустить сценарий, который создаст новое удержание и добавит в него пользователей.

  1. Сохраните этот текст в файле сценария Windows PowerShell с расширением PS1 (например, CloneSearch.ps1):

    #script begin
    " " 
    write-host "***********************************************"
    write-host "   Office 365 Security & Compliance Center   " -foregroundColor yellow -backgroundcolor darkgreen
    write-host "   eDiscovery cases - Add users to a hold   " -foregroundColor yellow -backgroundcolor darkgreen 
    write-host "***********************************************"
    " " 
    # Get user credentials & Connect to Office 365 SCC, SPO
    
    $credentials = Get-Credential -Message "Specify your credentials to connect to the Office 365 Security & Compliance Center and SharePoint Online"
    $s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.compliance.protection.outlook.com/powershell-liveid" -Credential $credentials -Authentication Basic -AllowRedirection -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)
    $a = Import-PSSession $s -AllowClobber
    
        if (!$s)
        {
            Write-Error "Couldn't create PowerShell session."
            return;
        }
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to http://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 "The SharePoint Online Management Shell isn't installed. Please install it from: http://go.microsoft.com/fwlink/p/?LinkId=255251 and then re-run this script."
            return;
        }
    }
    
    if (!$spCreds)
    {
        $spCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName, $credentials.Password)
    }
    
    # Get the user's MySite domain name. We use this to create the admin URL and root URL for OneDrive for Business
    ""
    $mySiteDomain = Read-Host "Enter the name of your organization's MySite domain. For example, 'contoso' for 'https://contoso-my.sharepoint.com'"
    ""
    
    # Get other required information
    do{
    $casename = Read-Host "Enter the name of the case"
    $caseexists = (get-compliancecase -identity "$casename" -erroraction SilentlyContinue).isvalid
    if($caseexists -ne 'True')
    {""
    write-host "A case named '$casename' doesn't exist. Please specify the name of an existing case, or create a new case and then re-run the script." -foregroundColor Yellow
    ""}
    }While($caseexists -ne 'True')
    
    ""
    do{
    $holdName = Read-Host "Enter the name of the new hold"
    $holdexists=(get-caseholdpolicy -identity "$holdname" -case "$casename" -erroraction SilentlyContinue).isvalid
    if($holdexists -eq 'True')
    {""
    write-host "A hold named '$holdname' already exists. Please specify a new hold name." -foregroundColor Yellow
    ""}
    }While($holdexists -eq 'True')
    
    ""
    $holdQuery = Read-Host "Enter a search query to create a query-based hold, or press Enter to hold all content"
    ""
    $holdstatus = read-host "Do you want the hold enabled after it's created? (Yes/No)"
    
    do{
    ""
    $inputfile = read-host "Enter the name of the text file that contains the email addresses of the users to add to the hold"
    ""
    $fileexists = test-path -path $inputfile
    if($fileexists -ne 'True'){write-host "$inputfile doesn't exist. Please enter a valid file name." -foregroundcolor Yellow}
    }while($fileexists -ne 'True')
    
    #Import the list of addresses from the txt file.  Trim any excess spaces and make sure all addresses 
        #in the list are unique.
    	[array]$emailAddresses = Get-Content $inputfile -ErrorAction SilentlyContinue | where {$_.trim() -ne ""}  | foreach{ $_.Trim() }
    	[int]$dupl = $emailAddresses.count
    	[array]$emailAddresses = $emailAddresses | select-object -unique
    	$dupl -= $emailAddresses.count
    
    #Validate email addresses so the hold creation does not run in to an error.
    if($emailaddresses.count -gt 0){
    write-host ($emailAddresses).count "addresses were found in the text file. There were $dupl duplicate entries in the file." -foregroundColor Yellow
    ""
    Write-host "Validating the email addresses. Please wait..." -foregroundColor Yellow
    ""
    $finallist =@()
    foreach($emailAddress in $emailAddresses)
    {
    if((get-recipient $emailaddress -erroraction SilentlyContinue).isvalid -eq 'True')
    {$finallist += $emailaddress}
    else {"Unable to find the user $emailaddress"
    [array]$excludedlist += $emailaddress}
    }
    ""
    #find user's OneDrive Site URL using email address
    Write-Host "Getting the URL for each user's OneDrive for Business site." -foregroundColor Yellow
    ""
    $AdminUrl = "https://$mySiteDomain-admin.sharepoint.com"
    $mySiteUrlRoot = "https://$mySiteDomain-my.sharepoint.com"
    
    # 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
    $urls = @()
    foreach($emailAddress in $emailAddresses)
    {
          try{
            $prop = $UserProfileService.GetUserProfileByName("i:0#.f|membership|$emailAddress") | Where-Object { $_.Name -eq "PersonalSpace" }
            $url = $prop.values[0].value
    		if($url -ne $null){
            $furl = $mySiteUrlRoot + $url
            $urls += $furl
            Write-Host "- $emailAddress => $furl"
    		[array]$ODadded += $furl}
    	else{    
            Write-Warning "Couldn't locate OneDrive for $emailAddress"
    		[array]$ODExluded += $emailAddress
        }}
    	catch { 
    	Write-Warning "Could not locate OneDrive for $emailAddress"
    	[array]$ODExluded += $emailAddress
    	Continue }
    }
    
    if(($finallist.count -gt 0) -or ($urls.count -gt 0)){
    ""
    Write-Host "Creating the hold named $holdname. Please wait..." -foregroundColor Yellow
    if(($holdstatus -eq "Y") -or ($holdstatus -eq  "y") -or ($holdstatus -eq "yes") -or ($holdstatus -eq "YES")){
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $True | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery | out-null
    }
    else{
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $false | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery -disabled $true | out-null
    }
    ""
    }
    else {"No valid locations were identified. Therefore, the hold wasn't created."}
    
    #write log files (if needed)
    $newhold=Get-CaseHoldPolicy -Identity "$holdname" -Case "$casename" -erroraction SilentlyContinue
    $newholdrule=Get-CaseHoldRule -Identity "$holdName" -erroraction SilentlyContinue
    if(($ODAdded.count -gt 0) -or ($ODExluded.count -gt 0) -or ($finallist.count -gt 0) -or ($excludedlist.count -gt 0) -or ($newhold.isvalid -eq 'True') -or ($newholdrule.isvalid -eq 'True'))
    {
    Write-Host "Generating output files..." -foregroundColor Yellow
    if($ODAdded.count -gt 0){
    "OneDrive Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.SharePointLocation.name | add-content .\LocationsOnHold.txt}
    if($ODExluded.count -gt 0){ 
    "Users without OneDrive locations" | add-content .\LocationsNotOnHold.txt
    "================================" | add-content .\LocationsNotOnHold.txt
    $ODExluded | add-content .\LocationsNotOnHold.txt}
    if($finallist.count -gt 0){
    " " | add-content .\LocationsOnHold.txt
    "Exchange Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.ExchangeLocation.name | add-content .\LocationsOnHold.txt}
    if($excludedlist.count -gt 0){
    " "| add-content .\LocationsNotOnHold.txt
    "Mailboxes not added to the hold" | add-content .\LocationsNotOnHold.txt
    "===============================" | add-content .\LocationsNotOnHold.txt
    $excludedlist | add-content .\LocationsNotOnHold.txt}
    $FormatEnumerationLimit=-1
    if($newhold.isvalid -eq 'True'){$newhold|fl >.\GetCaseHoldPolicy.txt}
    if($newholdrule.isvalid -eq 'True'){$newholdrule|Fl >.\GetCaseHoldRule.txt}
    }
    }
    
    else {"The hold wasn't created because no valid entries were found in the text file."}
    ""
    Write-host "Script complete!" -foregroundColor Yellow
    ""
    #script end
  2. На локальном компьютере откройте Windows PowerShell и перейдите в папку, в которой вы сохранили сценарий.

  3. Запустите сценарий, например:

    .\AddUsersToHold.ps1
  4. Введите сведения, которые запрашивает сценарий.

    Сценарий подключается к Центр безопасности и соответствия требованиям с помощью удаленной оболочки PowerShell, создает новое удержание в рамках дела обнаружения электронных данных и добавляет в него почтовые ящики и сайты OneDrive для бизнеса пользователей, указанных в списке. Чтобы просмотреть новое удержание, в Центре безопасности и соответствия требованиям перейдите к делу на странице Обнаружение электронных данных.

Завершая работу, сценарий создает перечисленные ниже файлы журнала и сохраняет их в своей папке.

  • LocationsOnHold.txt.   Содержит список почтовых ящиков и сайтов OneDrive для бизнеса, успешно помещенных на удержание сценарием.

  • LocationsNotOnHold.txt.   Содержит список почтовых ящиков и сайтов OneDrive для бизнеса, которые не помещены на удержание сценарием. Пользователь, у которого есть почтовый ящик, но нет сайта OneDrive для бизнеса, будет включен в список, где указаны сайты OneDrive для бизнеса, не помещенные на удержание.

  • GetCaseHoldPolicy.txt.   Содержит результат выполнения командлета Get-CaseHoldPolicy, выполненного сценарием после создания удержания. Этот командлет возвращает список пользователей, чьи почтовые ящики и сайты OneDrive для бизнеса помещены на удержание, и сведения о том, включено ли удержание.

  • GetCaseHoldRule.txt.   Содержит результат выполнения командлета Get-CaseHoldRule, выполненного сценарием после создания удержания. Этот командлет возвращает поисковый запрос, если сценарий использовался для создания удержания на основе запроса.

К началу

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×