为 OneDrive for Business 站点分配电子数据展示权限

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

您可以使用中SharePoint Online的电子数据展示中心搜索所有OneDrive for Business网站中您的组织特定的关键字、 敏感信息和其他都搜索条件。在您的组织中的每个用户是其OneDrive for Business网站,它位于名为 https://domain-my.sharepoint.com 的网站集所有者。默认情况下, Office 365全局管理员或合规性管理器不能使用SharePoint Online在电子数据展示中心搜索任何OneDrive for Business网站。若要搜索OneDrive for Business网站,管理员或法规遵从性经理必须是网站集管理员该OneDrive for Business网站。

本主题指导您完成让管理员或法规事务经理成为组织中每个 OneDrive for Business 站点的站点集合管理员的步骤。

步骤 1: 连接到您的组织的 sharepoint Online Management Shell

步骤 2: 收集所有 OneDrive for Business 网站的列表

步骤 3: 为用户分配作为网站集管理员到 OneDrive for Business 网站

请参阅的详细信息部分中了解有关使用这些脚本,包括修订在步骤 3 以作为网站集管理员从OneDrive for Business网站中删除用户的脚本提示本主题的末尾。

开始之前

  • 安装SharePoint Online命令行管理程序。有关信息,请参阅设置 SharePoint Online Management Shell Windows PowerShell 环境

  • 每当要分配用户作为组织中任意 OneDrive for Business 站点的站点集合管理员时请在步骤 3 中运行该脚本。

    重要: 作为 OneDrive for Business 站点的站点集合管理员的管理员或法规事务经理可以打开用户的 OneDrive for Business 文档库并执行与所有者相同的任务。控制并监控向谁分配了您组织中 OneDrive for Business 站点的电子数据展示权限很重要。

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

步骤 1: 连接到您的组织的SharePoint Online命令行管理程序

  1. 在您的本地计算机上打开SharePoint Online Management Shell,并运行以下命令:

    $credentials = Get-Credential

    在“Windows PowerShell 凭据请求”对话框中,键入您的 Office 365 全局管理员帐户的用户名和密码,然后单击“确定”。

  2. 运行以下命令以连接到您的组织SharePoint Online外壳:

    Connect-SPOService -Url https://<your organization name>-admin.sharepoint.com –credential $credentials
  3. 要验证您已连接到您的SharePoint Online组织,请运行以下命令以获取您的组织中的所有网站的列表:

    Get-SPOSite

返回页首

步骤 2: 收集所有OneDrive for Business网站列表

在此步骤中,运行 Shell 脚本创建组织中所有 OneDrive for Business 站点的列表。该列表保存到文本文件中。您在步骤 3 中运行的脚本分配一个指定用户作为在该步骤中创建的文本文件中列出的每个 OneDrive for Business 站点的站点集合管理员。在步骤 3 中运行脚本之前,您可能想要通过删除站点来编辑该文件。请参阅本主题末尾处的More information来了解向批量用户分配电子数据展示权限的提示。

  1. 将以下文本保存到文本文件中。例如,您可以将其保存到名为 GetOD4BSites.txt 的文件中。

    # URL for your organization's SharePoint Online admin service
    $AdminURI = "https://<your organization name>-admin.sharepoint.com"
    
    # User account for an Office 365 global admin in your organization
    $AdminAccount = "<global admin account>"
    $AdminPass = "<password for global admin account>"
    
    # Where should we save the list of MySites?
    $LogFile = 'C:\Users\<youralias>\Desktop\ListOfMysites.txt'
    
    
    # Begin the process
    
    $loadInfo1 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
    $loadInfo2 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
    $loadInfo3 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
    
    # Convert the Password to a secure string, then zero out the cleartext version ;)
    $sstr = ConvertTo-SecureString -string $AdminPass -AsPlainText –Force
    $AdminPass = ""
    
    # Take the AdminAccount and the AdminAccount password, and create a credential
    
    $creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminAccount, $sstr)
    
    
    # Add the path of the User Profile Service to the SharePoint Online admin URL, then create a new webservice proxy to access it
    $proxyaddr = "$AdminURI/_vti_bin/UserProfileService.asmx?wsdl"
    $UserProfileService= New-WebServiceProxy -Uri $proxyaddr -UseDefaultCredential False
    $UserProfileService.Credentials = $creds
    
    # Take care of auth cookies
    $strAuthCookie = $creds.GetAuthenticationCookie($AdminURI)
    $uri = New-Object System.Uri($AdminURI)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    
    # Grab the first User profile, at index -1
    $UserProfileResult = $UserProfileService.GetUserProfileByIndex(-1)
    
    Write-Host "Starting- This could take a while."
    
    $NumProfiles = $UserProfileService.GetUserProfileCount()
    $i = 1
    
    # As long as the next User profile is NOT the one we started with (at -1)...
    While ($UserProfileResult.NextValue -ne -1) 
    {
    Write-Host "Examining profile $i of $NumProfiles"
    
    # Look for the Personal Space object in the User Profile and pull it out
    # (PersonalSpace is the name of the path to a user's mysite)
    $Prop = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "PersonalSpace" } 
    $Url= $Prop.Values[0].Value
    
    # If "PersonalSpace" (which we've copied to $Url) exists, log it to our file...
    if ($Url) {
    $Url | Out-File $LogFile -Append -Force
    }
    
    # And now we check the next profile the same way...
    $UserProfileResult = $UserProfileService.GetUserProfileByIndex($UserProfileResult.NextValue)
    $i++
    }
    
    Write-Host "Done!"
  2. 编辑脚本文件开头的以下变量,并使用组织特定的信息。以下示例假设贵组织的名称为 Contoso。请务必用双引号 (" ") 引住变量的值。

    • $AdminURI  此参数指定SharePoint Online管理服务,例如, "https://contoso-admin.sharepoint.com"URI。

    • $AdminAccount   它在您的 Office 365 组织中指定一个全局管理员帐户,例如 "admin@contoso.onmicrosoft.com"

    • $AdminPass   它指定 $AdminAccount 指定的帐户的密码,例如 "J$P1ter1"

    • $LogFile   它指定所创建的文本文件的完整路径并包括贵组织中所有 OneDrive for Business 站点的列表。例如,要将该文件保存至桌面,请使用 'C:\Users\<youralias>\Desktop\ListOfMysites.txt'。请务必用单引号 (' ') 引住该变量的值。注意,在您在步骤 3 中运行的脚本中指定该相同位置。

  3. 通过将文本文件的名称后缀改为 .ps1 将其另存为 PowerShell 脚本文件。例如,将文件 GetOD4BSites.txt 另存为 GetOD4BSites.ps1。

  4. 在SharePoint Online命令行管理程序,转到您在上一步中创建的脚本所在的文件夹,然后再运行该脚本,例如:

    .\GetOD4BSites.ps1

脚本成功完成后,将在脚本中的 $LogFile 变量指定的位置创建一个文本文件。此文件包含 SharePoint Online 组织中所有 OneDrive for Business 网站的列表。以下文本提供了此文件中的网站列表应如何格式化的示例。如有必要,您可以从此文件中删除网站。

/personal/annb_contoso_onmicrosoft_com/
/personal/carolt_contoso_onmicrosoft_com/
/personal/esterv_contoso_onmicrosoft_com/
/personal/hollyh_contoso_onmicrosoft_com/
/personal/jeffl_contoso_onmicrosoft_com/
/personal/joeh_contoso_onmicrosoft_com/
/personal/kaia_contoso_onmicrosoft_com/

返回页首

步骤 3: 为用户分配作为网站集管理员到OneDrive for Business网站

下一步是运行另一个脚本,该脚本分配一个指定用户作为组织中每个 OneDrive for Business 站点的站点集合管理员。此脚本使用在步骤 2 中运行该脚本时创建的 OneDrive for Business 站点列表。如先前所述,每当您想要分配一个用户作为 OneDrive for Business 站点的站点集合管理员时都必须运行此脚本。

  1. 将以下文本保存到文本文件中。例如,您可以将其保存至名为 OD4BAssignSCA.txt 的文件。

    #Start logging, so if this script fails, you can look at the last successful change,
    # remove any OneDrive for Business paths that worked it from the input file, and then rerun the script.
    
    Start-Transcript
    
    # URL for your organization's SPO admin service
    $AdminURI = "https://<your organization name>-admin.sharepoint.com"
    
    # User account for an Office 365 global admin in your organization
    $AdminAccount = "<global admin account>"
    
    # Compliance manager to be made site collection admin on each MySite
    $eDiscoveryUser = "<eDiscovery user account>"
    
    # URL for your tenant's MySite domain
    $MySitePrefix = "https://<your organization name>-my.sharepoint.com"
    
    # Where should we read the list of MySites?
    # This file should contain partial MySite paths formatted as follows, one per line; for example
    # /personal/junminh_contoso_onmicrosoft_com/
    $MySiteListFile = 'C:\Users\<youralias>\Desktop\ListOfMysites.txt'
    
    # Begin by connecting to the service
    Connect-SPOService -Url $AdminURI -Credential $AdminAccount
    
    # Make a reader for our list of MySites
    $reader = [System.IO.File]::OpenText($MySiteListFile)
    
    try {
        for(;;) {
    # Read a line
            $line = $reader.ReadLine()
    
    # Stop if it doesn't exist
            if ($line -eq $null) { break }
    
            # Turn the line into a complete SharePoint site path by merging $MySitePrefix
    # Formatted like this: "https://contoso-my.sharepoint.com"
    # ...with each partial MySite path in the file, formatted like this:
    # "/personal/junminh_contoso_onmicrosoft_com/"
            $fullsitepath = "$MySitePrefix$line"
    Write-Host "Operating on $fullsitepath "
    
    # We need to remove the last "/" to work around an issue.
    # "/personal/junminh_contoso_onmicrosoft_com/"
    # becomes "/personal/junminh_contoso_onmicrosoft_com"
    $fullsitepath = $fullsitepath.trimend("/")
    
    # Make the specified eDiscovery user a site collection admin on the OneDrive for Business site
    Write-Host "Making $eDiscoveryUser a Site Collection Admin"
    Set-SPOUser -Site $fullsitepath -LoginName $eDiscoveryUser -IsSiteCollectionAdmin $true
    
        }
    }
    finally {
        $reader.Close()
    }
    
    Write-Host "Done!"
    Stop-Transcript
    Write-Host "Log written."
  2. 编辑脚本文件开头的以下变量,并使用组织特定的信息。以下示例假设贵组织的域名为 contoso.onmicrosoft.com。请务必用双引号 (" ") 引住变量的值。

    • $AdminURI此参数指定的 SharePoint Online 管理员服务,例如, "https://contoso-admin.sharepoint.com"URI。

    • $AdminAccountOffice 365 组织,例如, "admin@contoso.onmicrosoft.com"中指定的全局管理员帐户。

    • $eDiscoveryUser此参数指定管理员或合规性管理器将作为网站集管理员为您的组织中的每个OneDrive for Business站点,例如分配的用户, "annb@contoso.onmicrosoft.com"的用户的帐户。

      注意: 更改 $eDiscoveryUser 变量指定的用户帐户并重新运行脚本,以将其他用户分配为 $MySiteListFile 变量指定的 OneDrive for Business 站点的站点集合管理员。

    • $MySitePrefix此参数指定您的组织我的网站的域的 URL。这是包含您的组织,例如, "https://contoso-my.sharepoint.com"中的所有OneDrive for Business网站的域。

    • $MySiteListFile此参数指定在步骤 2 中创建的文本文件的完整路径。此文件包含在您的组织,例如, 'C:\Users\<youralias>\Desktop\ListOfMysites.txt'OneDrive for Business网站的列表。请务必括起此变量值用单引号 (' ')。请注意,就像在您在步骤 2 中运行脚本中,您应指定的相同位置。

  3. 通过将文本文件的名称后缀改为 .ps1 将其另存为 PowerShell 脚本文件。例如,将文件 OD4BAssignSCA.txt 另存为 OD4BAssignSCA.ps1。

  4. 在SharePoint Online命令行管理程序,转到包含您在上一步中创建的 PowerShell 脚本的文件夹,然后再运行该脚本,例如:

    .\OD4BAssignSCA.ps1

    将提示您输入脚本中指定的管理员帐户的密码。如果脚本成功运行,会对 $MySiteListFile 所指定的输入文件中列出的每个 OneDrive for Business 站点显示“使<$eDiscoveryUser 指定的用户>成为站点集合管理员”消息。

返回页首

更多信息

  • 步骤 3 中运行的脚本使用 Set-SPOUser cmdlet 将指定用户分配为 $MySiteListFile 变量所指定的文件中列出的每个 OneDrive for Business 的站点集合管理员。如果您是拥有数千个用户的大型组织,请考虑执行以下操作来轻松应付分配电子数据展示权限。

    • 编辑步骤 2 中的脚本所创建的包含 OneDrive for Business 站点列表的文件,以使其只包含有效案件中涉及的用户的站点。

    • 每天将权限分配给不超过 2,500 OneDrive for Business 个站点。例如,假设您组织中有 10,000 OneDrive for Business 个站点。可以在步骤 2 中运行脚本以收集所有站点。然后,可以使用该文件创建四个文件,每个文件包含 2,500 个用户。在第一天,您将在步骤 3 中运行脚本以将权限分配给前 2,500 个 OneDrive for Business 站点。在第二天,将针对接下来的 2,500 OneDrive for Business 个站点运行脚本,等等。

  • 记录分配有电子数据展示权限的 OneDrive for Business 站点以及分配为站点集合管理员的用户。例如,分配权限后,您可以保存包含 OneDrive for Business 站点的文本文件,并在其中添加一行来标识分配为站点集合管理员的用户。

  • 用户可以查看其 OneDrive for Business 站点的站点集合管理员列表。因为用户是其自己的 OneDrive for Business 站点的站点集合管理员,所以他们可以删除站点集合管理员。考虑执行以下操作以减小用户删除分配有 OneDrive for Business 站点电子数据展示权限的用户的可能性。

    • 通知用户:出于电子数据展示和合规性目的,法规事务主管已被分配为组织中 OneDrive for Business 站点的站点集合管理员。

    • 如有必要,在步骤 3 中重新运行脚本以重新分配一个用户作为 OneDrive for Business 站点的站点集合管理员。

  • 您还可以使用步骤 3 中运行的脚本从 OneDrive for Business 站点中删除作为站点集合管理员的用户。要删除作为站点集合管理员的用户,您必须将以下命令(接近脚本末尾处)从:

    Set-SPOUser -Site $fullsitepath -LoginName $eDiscoveryUser -IsSiteCollectionAdmin $true

    更改为:

    Set-SPOUser -Site $fullsitepath -LoginName $eDiscoveryUser -IsSiteCollectionAdmin $false

    您还可以将脚本中的以下行从:

    "Making $eDiscoveryUser a Site Collection Admin"

    更改为:

    "Removing $eDiscoveryUser as a Site Collection Admin"

    进行这些更改后,用不同的名字保存脚本,例如 OD4BRemoveSCA.ps1,然后使用它从一组 OneDrive for Business 站点中删除作为站点集合管理员的用户。

  • 当运行步骤 2 中的脚本时,会处理组织中找到的每个配置文件,并显示消息“正在检查第 x 个配置文件(共 y 个)”。检查的配置文件总数可能多于保存到 ListOfMysites 输出文件中的 OneDrive for Business 站点数。这通常是因为只有使用或打开其 OneDrive for Business 站点的用户包含在输出文件中。

返回页首

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

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

此信息是否有帮助?

谢谢您的反馈!

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

×