本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

如何顯示商務網站集合的 OneDrive 的清單

SharePoint 2013
 

適用版本:Office 365, OneDrive for Business

上次修改主題的時間:2016-12-16

了解管理員如何使用 Windows PowerShell 收集您組織中的每一個商務用 OneDrive網站的網站集合的清單。

本文提供系統管理員會在組織中顯示的每一個商務用 OneDrive網站Windows PowerShell指令碼。

Step 1: Connect SharePoint Online Management Shell to your organization

Step 2: Collect a list of all OneDrive for Business sites

請參閱本主題的使用這個指令碼秘訣結尾處的詳細資訊

  • 安裝 SharePoint Online 管理命令介面。資訊,請參閱設定 SharePoint Online 管理命令介面 Windows PowerShell 環境

    重要事項 重要事項:
    會在使用者商務用 OneDrive網站的網站集合管理員權限授與本身的租用戶系統管理員可以開啟使用者的商務用 OneDrive文件庫和執行為其擁有人的相同工作。請務必控制和監視器已被指派組織中的承租人管理員權限。
  • Windows PowerShell指令碼需要安裝的 SharePoint 用戶端物件模型 (CSOM)。這會指定將下行: [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")

  • 本主題中所提供的範例Windows PowerShell指令碼不支援任何 Microsoft 標準支援程式或服務底下。為 IS 提供範例指令碼沒有任何類型的瑕疵擔保。Microsoft 進一步不作所有默示之的擔保包括但不限於任何默示擔保售或適合特定用途。與您保持承擔使用或效能的範例指令碼及文件的風險。無事件中應 Microsoft、 其作者,或任何其他人參與建立、 實際執行,或指令碼的傳遞是概之任何損害皆不 (包括,但不限制、 遺失的商務利潤、 業務中斷、 遺失的商務資訊的損害或其他金錢遺失) 引起的使用或無法使用的範例指令碼或文件即使 Microsoft 已被告知這類損害的可能性。

  1. 在您的本機電腦上,開啟 SharePoint Online 管理命令介面,執行以下命令:

    $credentials = Get-Credential
    

    [Windows PowerShell 認證要求] 對話方塊中,輸入 Office 365 全域管理員帳戶的使用者名稱和密碼,然後按一下 [確定]

  2. 執行下列程式碼將命令介面連線至您的 SharePoint Online 組織:

    Connect-SPOService -Url https://<yourdomain>-admin.sharepoint.com -credential $credentials
    
  3. 若要確認您已連線至 SharePoint Online 組織,請執行下列命令以連線至您的組織根網站:

    Get-SPOSite https://<yourdomain>.sharepoint.com
    

在這個步驟中,您可以執行Windows PowerShell指令碼來建立您組織中所有商務用 OneDrive網站清單。此清單會儲存到文字檔。

  1. 將下列文字儲存到文字檔。例如,您無法將其儲存至名為GetOD4BSites.txt檔案。

    # Specifies the URL for your organization's SPO admin service
    $AdminURI = "https://your organization name-admin.sharepoint.com"
    
    # Specifies the User account for an Office 365 global admin in your organization
    $AdminAccount = "global admin account"
    $AdminPass = "password for global admin account"
    
    # Specifies the location where the list of MySites should be saved
    $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 SPO 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
    
    # Set variables for authentication cookies
    $strAuthCookie = $creds.GetAuthenticationCookie($AdminURI)
    $uri = New-Object System.Uri($AdminURI)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    
    # Sets 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 retrieve it
    # (PersonalSpace is the name of the path to a user's OneDrive for Business site. Users who have not yet created a 
    # OneDrive for Business site might not have this property set.)
    $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.com。

    • $AdminURI   這會指定您的 SharePoint Online 管理服務的 URI,例如 https://contoso-admin.sharepoint.com

    • $AdminAccount   這會指定您 Office 365 組織中的全域管理員帳戶,例如 admin@contoso.onmicrosoft.com

    • $AdminPass   這會指定 $AdminAccount 指定之帳戶的密碼,例如 "J$P1ter1"

    • $LogFile  指定建立和包含組織中所有商務用 OneDrive網站清單的文字檔案的完整路徑。例如,若要將這個檔案儲存至桌面、 使用'C:\Users\<youralias>\Desktop\ListOfMysites.txt'

  3. 文字檔案儲存為Windows PowerShell指令碼檔案變更為.ps1 的檔案名稱尾碼。例如儲存檔案並 GetOD4BSites.txt GetOD4BSites.ps1 為。

  4. 在 SharePoint Online 管理命令介面中,移至前一步驟建立之指令碼的所在資料夾,然後執行指令碼,例如:

    .\GetOD4BSites.ps1
    

指令碼執行成功後,會在指令碼中 $LogFile 變數指定的位置建立文字檔。此檔案包含您的 SharePoint Online 組織中所有 商務用 OneDrive 網站的清單。以下文字為此檔案中網站清單格式的範例。如有必要,您可以移除檔案中的網站。

/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/

Return to top

您可以使用連線至商務用 OneDrive網站Get-SPOSite指令程式,並使用Set-SPOSite指令程式可以變更擁有權。 一旦您網站的擁有者,您可以使用一般 SharePoint 用戶端物件模型 (CSOM) 才會進一步管理作業。

顯示: