PowerShell kullanarak Tüm OneDrive İş Sitelerini Bulun


Gereksinim: SharePoint Online'dan tüm OneDrive site koleksiyonlarının listesini alın.

Office 365 kiracımızda OneDrive İş kullanımına ilişkin tüm OneDrive sitelerinin listesini almam istendi. Tüm OneDrive site koleksiyonlarınızı bulmak biraz zordur ve Get-SPOSite cmdlet'ini kullanarak bunu şu şekilde başardım:

Tüm OneDrive İş URL'leri Nasıl Listelenir?

OneDrive İş, Microsoft 365 araç paketinin parçası olan bulut tabanlı bir dosya depolama hizmetidir. Yönetici olarak, denetim veya yönetim amacıyla kuruluşunuzdaki tüm OneDrive sitelerinin bir listesini almanız gerekebilir. Bu makalede, Microsoft 365 yönetim merkezini ve PowerShell'i kullanarak tüm OneDrive sitelerini Microsoft 365'e alma adımlarını özetleyeceğiz.

Kuruluşunuzdaki tüm OneDrive İş sitelerinin listesini Microsoft 365 yönetim merkezi aracılığıyla almak için aşağıdakileri yapın:

  1. https://admin.microsoft.com adresinden Microsoft 365 Yönetim merkezinde oturum açın
  2. Sol gezinme bölmesinde “Raporlar”a tıklayın >> “Kullanım”a tıklayın.
  3. OneDrive Dosyaları altında “Daha Fazlasını Görüntüle”ye tıklayın
  4. Tüm OneDrive sitelerinin listesini sağlayan raporu görüntülemek için biraz aşağı kaydırın. Daha ayrıntılı analiz için rapor verilerini CSV formatına da aktarabilirsiniz.

SharePoint Çevrimiçi Yönetim Kabuğu'nu kullanarak Tüm OneDrive Sitelerini Bulun:

OneDrive İş, dosyaları kaydetmek ve paylaşmak için merkezi depolama alanı sağlar. OneDrive'da depolanan dosyalar herhangi bir cihaza indirilebilir ve veri tutarlılığını sağlamak için bulutla senkronize edilebilir. PowerShell'i kullanarak SharePoint Online'daki tüm OneDrive site koleksiyonlarını bulalım. Bu PowerShell betiği, site şablonu özelliğini filtreleyerek SharePoint Online'daki tüm OneDrive site koleksiyonlarını alır.


$AdminSiteURL="https://crescent-admin.sharepoint.com"

#Get Credentials to connect to SharePoint Admin Center
$Cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -credential $Cred

#Get all Personal Site collections and export to a Text file
Get-SPOSite -Template "SPSPERS" -limit ALL -includepersonalsite $True | Select URL, Owner | Format-table -autosize | Out-string -width 8096 | Out-file C:\temp\OneDriveSites.txt 

$AdminSiteURL'yi etki alanınızla değiştirmeniz, SharePoint Online yöneticisinin kimlik bilgilerini sağlamanız ve betiği çalıştırmanız yeterlidir. Bu komut dosyası çıktıyı “C:\Temp\OneDriveSites.txt” dosyasında üretir.

PowerShell kullanarak tüm OneDrive İş sitelerini listeleme

-Filter'ı da kullanabilirsiniz. Get-SPOSite cmdlet'indeki -Filter anahtarını şu şekilde de kullanabilirsiniz:


Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'"

PnP PowerShell kullanarak Tüm OneDrive Sitelerini Alın

PnP PowerShell kullanarak tüm OneDrive site koleksiyonlarının listesini şu şekilde alabiliriz:


#Config Variables
$TenantSiteURL =  "https://crescent-admin.sharepoint.com/"
  
#Connect to PnP Online
Connect-PnPOnline -Url $TenantSiteURL -Interactive

#Get All OneDrive Sites
Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like '-my.sharepoint.com/personal/'"

Tüm OneDrive sitelerini bir CSV dosyasına aktaralım:


#Parameter
$Tenant =  "CrescentIntranet"
$CSVPath = "C:\Temp\OneDriveSites.csv"

#Connect to PnP Online
Connect-PnPOnline -Url "https://$tenant-admin.sharepoint.com" -Interactive

#Get OneDrive Site Details and export to CSV
Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like 'https://$tenant-my.sharepoint.com/personal/'" |
    Select Title, URL, Owner, LastContentModifiedDate, StorageUsage | 
        Export-Csv -Path $CSVPath -NoTypeInformation

Tüm OneDrive Sitelerini PowerShell - CSOM kullanarak edinin:

Alternatif bir yaklaşım olarak tüm OneDrive site koleksiyonlarını almak için PowerShell CSOM'u kullanabilirsiniz. Bu komut dosyası, UserProfileService kullanan tüm SharePoint Online kullanıcılarını getirir ve kullanıcının bir Kişisel sitesi olup olmadığını kontrol eder. PowerShell ile tüm OneDrive İş sitelerini listeleyen komut dosyası aşağıda verilmiştir:


#Add references to SharePoint client assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")

# Specify sharepoint online admin url 
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$MySiteURL="https://crescent-my.sharepoint.com"

#Specify the location where the list of OneDrive sites should be saved
$LogFile = "C:\Temp\OneDriveSites.txt"
 
#Setup Credentials to connect
$AdminCred= Get-Credential
$AdminCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminCred.Username, $AdminCred.Password)
 
#Set User Profile Service path using SPO admin URL 
$ProxyAddr = "$AdminSiteURL/_vti_bin/UserProfileService.asmx?wsdl"
# Create a new webservice proxy to access UserProfileService
$UserProfileService= New-WebServiceProxy -Uri $ProxyAddr -UseDefaultCredential False
$UserProfileService.Credentials = $AdminCredentials
 
#Set authentication cookies
$StrAuthCookie = $AdminCredentials.GetAuthenticationCookie($AdminSiteURL)
$URI = New-Object System.Uri($AdminSiteURL)
$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)
 
$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 "Checking profile $i of $NumProfiles" -foreground Yellow
 
    # Look for the Personal Space object in the User Profile and retrieve it  
    $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) 
    {
        $SiteUrl = $MySiteURL+$URL
        # Write OneDrive site url to the console
        Write-Host $SiteUrl -foreground Green
        $SiteUrl | Out-File $LogFile -Append -Force
    }
 
    # And now we check the next profile the same way...
    $UserProfileResult = $UserProfileService.GetUserProfileByIndex($UserProfileResult.NextValue)
    $i++
}

Çözüm:

Bu basit adımları izleyerek Microsoft 365 yönetim merkezini veya PowerShell'i kullanarak kuruluşunuzdaki tüm OneDrive sitelerinin bir listesini hızlı bir şekilde alabilirsiniz. Bu, denetim, raporlama veya yönetim gibi çeşitli amaçlar için yararlı olabilir. Microsoft 365 yönetim merkezi, OneDrive ortamınızı yönetmek için kullanıcı dostu bir arayüz sağlarken PowerShell daha fazla otomasyon özellikleri sağlar. Hangi yöntemi seçerseniz seçin, süreç basit ve takip edilmesi kolaydır.

İlgili makaleler