SharePoint Online: "Koleksiyon başlatılmadı. İstenmedi veya istek yürütülmedi. Açıkça talep edilmesi gerekebilir" sorununu düzeltin PowerShell'de Hata
Hata: Koleksiyon başlatılmadı. Talep edilmedi veya talep yerine getirilmedi. Açıkça talep edilmesi gerekebilir.
Temel Neden:
Özelliklerini almaya çalışmadan önce nesneyi yüklemelisiniz!
Çözüm:
“Koleksiyon başlatılmadı. Talep edilmedi veya talep yerine getirilmedi. Açıkça talep edilmesi gerekebilir" hatası, SharePoint Online'daki bir nesneye yüklenmeden ve yürütülmeden önce erişmeye çalıştığınızda ortaya çıkar. Bu, sunucudan talep edilmeden önce öğe listesi gibi bir nesne koleksiyonuna erişmeye çalıştığınızda meydana gelebilir. Bu hatayı düzeltmek için, koleksiyonu açıkça talep etmeniz ve ardından verileri yüklemek için sorguyu yürütmeniz gerekir.
Sorun şu şekilde çözülebilir:
#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"
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$UserName = "Salaudeen@TheCrescentTech.com"
$Password = "Password goes here"
$SecurePassword= $Password | ConvertTo-SecureString -AsPlainText -Force
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
#Get All Fields from the List
$List = $Ctx.Web.Lists.GetByTitle("Documents")
#Load List Fields collection
$Ctx.Load($List.Fields)
$Ctx.ExecuteQuery()
ForEach($Field in $List.Fields)
{
Write-host $Field.Title
}
Lütfen 19. ve 20. Satırları atlarsanız Koleksiyon başlatılmadı hatasıyla karşılaşacağınızı unutmayın! Bir SharePoint Online sitesinden tüm liste adlarını almak için başka bir örnek alalım:
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
#Setup Credentials to connect
$Cred = Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Get all List names from the site
$Lists = $Ctx.web.Lists
ForEach($List in $Lists)
{
Write-host $List.Title
}
Yukarıdaki komut dosyası bir hata mesajıyla başarısız oluyor:
Burada öncelikle Lists koleksiyonunu yüklememiz gerekiyor. Bu nedenle sorunu çözmek için aşağıdakileri kullanın:
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
#Setup Credentials to connect
$Cred = Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Get all List names from the site
$Lists = $Ctx.web.Lists
$Ctx.Load($Lists)
$Ctx.ExecuteQuery()
ForEach($List in $Lists)
{
Write-host $List.Title
}
Bu nedenle, koleksiyon nesnelerine döngü içinde erişmeden önce yüklendiğinden ve yürütüldüğünden emin olun!
