使用内容搜索搜索邮箱和 OneDrive 业务网站的用户列表

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

Office 365 安全与合规中心提供了一些Windows PowerShell cmdlet 可让您自动执行耗时的电子数据展示相关任务。目前,在安全与合规中心搜索大量管理员内容的位置中创建的内容搜索需要时间和准备。 创建搜索之前,必须收集的每个OneDrive for Business网站的 URL,然后将每个邮箱和OneDrive for Business网站添加到搜索。在将来的版本中,这将更轻松地在安全与合规中心执行操作。在此之前,您可以使用脚本本文中自动执行此过程。此脚本会提示您输入您的组织我的网站域 (例如, contoso中 URL https://contoso-my.sharepoint.com) 的名称、 列表中的用户的电子邮件地址、 新的内容搜索,并使用搜索查询的名称。 脚本获取OneDrive for Business URL 在列表中,每个用户,然后创建并启动搜索在列表中,为每个用户的邮箱和OneDrive for Business网站使用您提供搜索查询的内容搜索。

下面是做到这一点的步骤操作︰

步骤 1︰ 安装 SharePoint Online Management Shell

步骤 2︰ 生成用户的列表

步骤 3︰ 运行脚本来创建并开始搜索

开始之前

  • 您必须是安全与合规中心和SharePoint Online全局管理员才能在步骤 3 中运行脚本中的电子数据展示管理器角色组的成员。

  • 请务必保存您在步骤 2 和步骤 3 中的脚本到同一文件夹中创建的用户列表。将使其更轻松地运行该脚本。

  • 该脚本包括最少错误处理。主要用途是可以轻松快速地搜索每个用户的邮箱和OneDrive for Business网站。

  • 本主题中提供的示例脚本在任意 Microsoft 标准支持程序或服务下都不受支持。示例脚本“原样”提供,不提供任何形式的保证。Microsoft 进一步拒绝所有默示保证,包括但不限于针对特定用途的适销性或适用性的任何默示保证。由于示例脚本及文档的使用或性能所引起的全部风险均由您承担。在任何情况下,对于由于使用或者无法使用示例脚本或文档所引起的任何损失(包括但不限于商业利润损失、业务中断、商业信息丢失或者其他经济损失),Microsoft、其作者或者参与创建、制作或交付脚本的任何人概不负责,即使 Microsoft 已被告知可能会出现此类损失。

步骤 1︰ 安装SharePoint Online命令行管理程序

第一步是安装SharePoint Online命令行管理程序。您不必使用 shell 在此过程,但您必须安装,因为它包含在步骤 3 中运行脚本所需的必备。这些先决条件允许脚本SharePoint Online以获取OneDrive for Business网站的 Url 使用进行通信。

转到设置 SharePoint Online Management Shell Windows PowerShell 环境 ,然后执行步骤 1 和步骤 2 以安装SharePoint Online命令行管理程序。

返回页首

步骤 2︰ 生成用户的列表

步骤 3 中的脚本将创建要搜索的邮箱和OneDrive for Business网站的用户列表的内容搜索。在一个文本文件,只需键入电子邮件地址或您可以在Windows PowerShell以获取电子邮件地址的列表,并将其保存到文件 (位于同一个文件夹,您将在步骤 3 中保存到脚本) 运行命令。

下面是Windows PowerShell命令 (使用远程 PowerShell 连接到您的组织Exchange Online运行) 以获取您的组织中的所有用户的电子邮件地址列表,并将其保存到文本文件名为 Users.txt。

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

运行此命令后,请确保打开文件并删除包含属性名称, PrimarySmtpAddress的标题。文本文件只应包含电子邮件地址列表以及其他任何内容。请确保没有空白的行之前或之后的电子邮件地址的列表。

返回页首

步骤 3︰ 运行脚本来创建并开始搜索

当您在此步骤中运行脚本时,它将提示您输入以下信息。请务必之前运行该脚本已准备好此信息。

  • 您的用户凭据 脚本将使用您的凭据访问SharePoint Online以获取OneDrive for Business Url 并连接到使用远程 PowerShell 安全与合规中心 。

  • 我的网站域的名称 我的网站的域是包含您的组织中的所有OneDrive for Business网站的域。例如,如果我的网站域的 URL 是https://contoso-my.sharepoint.com,然后输入contoso当脚本提示您输入我的网站域的名称。

  • 步骤 2 中的文本文件路径名 步骤 2 中创建的文本文件的路径名。如果文本文件和脚本都位于同一个文件夹,然后输入文本文件的名称。否则,输入文本文件的完整路径名。

  • 内容搜索的名称  将由脚本创建内容搜索的名称。

  • 搜索查询  创建并运行用于内容搜索搜索查询。有关搜索查询的详细信息,请参阅关键字查询和内容搜索的搜索条件

  1. 使用文件名后缀.ps1; 将以下文本保存到Windows PowerShell脚本文件例如,SearchEXOOD4B.ps1。将文件保存到在步骤 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 for Business 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 for Business
    $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 Office 365
    if (!$s -or !$a)
    {
        $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 "Could not 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 "SharePoint Online Management Shell isn't installed, please install from: http://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 for Business 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. 打开Windows PowerShell并转到步骤 2 中保存脚本和用户列表位置文件夹。

  3. 启动脚本。例如︰

    .\SearchEXOOD4B.ps1
  4. 提示您输入凭据,输入您的电子邮件地址和密码,然后单击确定

  5. 输入以下信息脚本提示时。键入每条信息,然后按Enter

    • 我的网站域的名称。

    • 包含的用户列表的文本文件的路径名。

    • 内容搜索的名称。

    • 搜索查询 (离开此空白返回内容的位置中的所有项目)。

    脚本获取每个OneDrive for Business网站的 Url,然后创建并启动搜索。您可以运行获取 ComplianceSearch cmdlet 来显示搜索统计信息和结果中,或者可以转到内容搜索页面中安全与合规中心若要查看有关搜索的信息。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×