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

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

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

步驟 1: 連線到您組織的 SharePoint Online 管理命令介面

步驟 2: 使用 Windows PowerShell 收集所有 OneDrive for Business 網站的清單

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

開始之前

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

    重要: 將使用者的商務用 OneDrive網站的網站集合管理員權限授與自己的租用戶系統管理員可以開啟使用者的商務用 OneDrive文件庫,然後執行相同的工作,例如 [擁有者。請務必控制項及已指派的租用戶系統管理員權限,您組織中人員的監視器。

  • PowerShell指令碼必須已安裝 SharePoint 用戶端物件模型 (CSOM)。這會由下列行: [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")

  • 本主題提供的PowerShell指令碼範例不支援的任何 Microsoft 標準支援程式或服務。在 [指令碼範例以提供不做任何類型。Microsoft 不所有暗示的擔保責任包括但不限於,任何暗示或適合特定用途的銷售的擔保責任。使用或指令碼範例或文件為承擔風險會留在您。在 Microsoft、 其作者,或建立、 生產或傳送的指令碼中的其他相關的任何人都應的任何損壞皆不 (包括,但不限於損害的影響商務利潤商務中斷、 影響商務資訊或其他金錢遺失) 一概使用無法使用的指令碼範例或文件,即使 Microsoft 已被告知這類損害的可能性。

步驟 1: 連線到您組織的 SharePoint Online 管理命令介面

  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

步驟 2: 使用 Windows PowerShell 收集所有 OneDrive for Business 網站的清單

在此步驟中,您可以執行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 管理員服務,例如https://contoso-admin.sharepoint.comURI。

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

    • $AdminPass  指定所指定的$AdminAccount,例如"J$P1ter1"帳戶的密碼。

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

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

  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/

回到頁首

其他資訊

您可以使用取得 SPOSite指令程式連線至商務用 OneDrive網站,可以使用設定 SPOSite指令程式來變更擁有權。 一旦您是網站擁有者,您可以使用一般 SharePoint 用戶端側物件模型 (CSOM) 才能進一步管理作業。

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×