SharePoint Online: PowerShell'i kullanarak Tüm Listeleri ve Kitaplıkları Alın
SharePoint Online sitenizdeki tüm listelerin ve kitaplıkların envanterini almanın bir yolunu mu arıyorsunuz? Bu, sitenizi denetlemek veya sitenizde ne olduğuna dair genel bir bakış elde etmek için yararlı olabilir. Bu yazımızda tüm listeler ve kütüphaneler hakkında detaylı bilgi almak için PowerShell’i nasıl kullanacağınızı göstereceğiz.
SharePoint Online: Tüm Listeleri Almak için PowerShell
SharePoint Online ile çalışırken sitedeki tüm listeleri yinelemeniz gerekebilir. Belirtilen SharePoint Online sitesinden tüm listeleri ve kitaplıkları almak için PowerShell betiği:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com/sites/sales"
$UserName="salaudeen@crescent.com"
$Password ="Password goes here"
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
Try {
#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $credentials
#sharepoint online powershell get all lists
$Lists = $Context.web.Lists
$Context.Load($Lists)
$Context.ExecuteQuery()
#Iterate through each list in a site
ForEach($List in $Lists)
{
#Get the List Name
Write-host $List.Title
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Bu PowerShell, tüm liste adlarını verilen SharePoint Online sitesinden alır.
SharePoint Çevrimiçi Sitesindeki Tüm Listelerin Envanterini Alma ve CSV'ye Aktarma
Biraz daha derine inelim ve tüm liste özelliklerini alıp bunları bir CSV dosyasına aktaralım:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Config Variable
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$CSVPath = "C:\Temp\ListInventory.csv"
#Setup Credentials to connect
$Cred = Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get Lists from the site
$Web = $Ctx.Web
$Lists = $Web.Lists
$Ctx.Load($Web)
$Ctx.Load($Lists)
$Ctx.ExecuteQuery()
$ListDataCollection = @()
#Get List details
ForEach ($List in $Lists)
{
$ListData = New-Object PSObject -Property ([Ordered] @{
ListName = $List.Title
Description = $List.Description
ItemCount = $List.ItemCount
BaseTemplateID = $List.BaseTemplate
Created = $List.Created
BaseType = $List.BaseType
ContentTypesEnabled = $List.ContentTypesEnabled
Hidden = $List.Hidden
ListId = $List.Id
IsCatalog = $List.IsCatalog
LastItemDeletedDate = $List.LastItemDeletedDate
LastItemModifiedDate = $List.LastItemModifiedDate
ParentWebUrl = $List.ParentWebUrl
VersioningEnabled = $List.EnableVersioning
})
$ListDataCollection += $ListData
}
$ListDataCollection
#Export List data to CSV
$ListDataCollection | Export-Csv -Path $CSVPath -Force -NoTypeInformation
Write-host -f Green "List Statistics Exported to CSV!"
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
SharePoint Online: Bir site koleksiyonundaki tüm listeler ve kitaplıklar aracılığıyla Yinelenecek PowerShell Komut Dosyası
Şimdi bu kodu yeniden kullanılabilir bir fonksiyon haline getirelim ve verilen sitedeki tüm sitelerden ve alt sitelerden listeler ve kütüphaneler alalım.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com/sites/sales"
#Get Credentials to connect
$Cred= Get-Credential
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Try {
#Function to Get all lists from the web
Function Get-SPOList($Web)
{
#Get All Lists from the web
$Lists = $Web.Lists
$Context.Load($Lists)
$Context.ExecuteQuery()
#Get all lists from the web
ForEach($List in $Lists)
{
#Get the List Name
Write-host $List.Title
}
}
#Function to get all webs from given URL
Function Get-SPOWeb($WebURL)
{
#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($WebURL)
$Context.Credentials = $Credentials
$Web = $context.Web
$Context.Load($web)
#Get all immediate subsites of the site
$Context.Load($web.Webs)
$Context.executeQuery()
#Call the function to Get Lists of the web
Write-host "Processing Web :"$Web.URL
Get-SPOList $Web
#Iterate through each subsite in the current web
foreach ($Subweb in $web.Webs)
{
#Call the function recursively to process all subsites underneaththe current web
Get-SPOWeb($SubWeb.URL)
}
}
#Call the function to get all sites
Get-SPOWeb $SiteUrl
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Komut Dosyası Çıkışı:
PnP PowerShell, Bir Site Koleksiyonundaki Tüm Listeleri ve Kitaplıkları Almak İçin
Tüm Sitelerin Liste ve Kütüphane Envanterini bir Site Koleksiyonunda alalım ve PnP PowerShell kullanarak CSV dosyasına aktaralım.
#Function to Get Lists and Libraries of a web
Function Get-SPOSiteInventory([Microsoft.SharePoint.Client.Web]$Web)
{
Write-host -f Yellow "Getting Lists and Libraries from site:" $Web.URL
#Get all lists and libraries
$SiteInventory= @()
$Lists= Get-PnPProperty -ClientObject $Web -Property Lists
foreach ($List in $Lists)
{
$Data = new-object PSObject
$Data | Add-member NoteProperty -Name "Site Name" -Value $Web.Title
$Data | Add-member NoteProperty -Name "Site URL" -Value $Web.Url
$Data | Add-member NoteProperty -Name "List Title" -Value $List.Title
$Data | Add-member NoteProperty -Name "List URL" -Value $List.RootFolder.ServerRelativeUrl
$Data | Add-member NoteProperty -Name "List Item Count" -Value $List.ItemCount
$Data | Add-member NoteProperty -Name "Last Modified" -Value $List.LastItemModifiedDate
$SiteInventory += $Data
}
#Get All Subwebs
$SubWebs = Get-PnPProperty -ClientObject $Web -Property Webs
Foreach ($Web in $SubWebs)
{
$SiteInventory+= Get-SPOSiteInventory -Web $Web
}
Return $SiteInventory
}
#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$CSVFile = "C:\temp\SiteData.csv"
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the Root Web
$Web = Get-PnPWeb
#Call the function and export results to CSV file
Get-SPOSiteInventory -Web $Web | Export-CSV $CSVFile -NoTypeInformation
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
PowerShell kullanarak SharePoint Online'daki tüm belge kitaplıklarını almak için şunu kullanın: SharePoint Online: Tüm Belge Kitaplıklarını Listelemek için PowerShell
