0

Need to add Add existing content type directly to SPO list using Powershell : this the code :

    function Add-ContentType($loginUsername,$password,$url,$listTitle,$contentTypeID)
{

   $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url)
   $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($loginUsername, $password) 
   $ctx.Load($ctx.Web.Lists) 
   $ctx.ExecuteQuery()


  $contentType=$ctx.Web.ContentTypes.GetById($contentTypeID)
  $ctx.Load($contentType)

 $ll=$ctx.Web.Lists.GetByTitle($listTitle)
 $ctx.load($ll)
 $ctx.load($ll.ContentTypes)
 $ctx.ExecuteQuery()
  $ll.ContentTypesEnabled=$true
 $addedContentType=$ll.ContentTypes.AddExistingContentType($contentType)
 $ll.Update()
  try
     {

         $ctx.ExecuteQuery()
         Write-Host "Adding content type " $addedContentType.Name " to " $ll.Title
     }
     catch [Net.WebException]
     {
        Write-Host $_.Exception.ToString()
     }



}

the $ctx have:

Web                          : Microsoft.SharePoint.Client.Web
Site                         : Microsoft.SharePoint.Client.Site
RequestResources             : Microsoft.SharePoint.Client.RequestResources
FormDigestHandlingEnabled    : True
ServerVersion                : 16.0...
Url                          : https://Site/sites/aaa
ApplicationName              : .NET Library
ClientTag                    : 
DisableReturnValueCache      : False
ValidateOnClient             : True
AuthenticationMode           : Default
FormsAuthenticationLoginInfo : 
Credentials                  : Microsoft.SharePoint.Client.SharePointOnlineCredentials
WebRequestExecutorFactory    : Microsoft.SharePoint.Client.DefaultWebRequestExecutorFactory
PendingRequest               : Microsoft.SharePoint.Client.ClientRequest
HasPendingRequest            : True
Tag                          : 
RequestTimeout               : 180000
StaticObjects                : {[Microsoft$SharePoint$SPContext$Current, Microsoft.SharePoint.Client.RequestContext]}
ServerSchemaVersion          : 15.0.0.0
ServerLibraryVersion         : 16.0...
RequestSchemaVersion         : 15.0.0.0
TraceCorrelationId           : 0a4dc19d-c084-3000-c314-44a6737157a6

the problem is :

$ctx.Web.Lists =is empty 

$ctx.Web.Lists.GetByTitle($listTitle) empty also.

any idea .

1 Answer 1

1

You need to load web first before you can access the lists.

First Load the Web:

$web = $clientContext.Web
$clientContext.load($web)
$clientContext.ExecuteQuery()

Then get the list:

$list = $clientContext.Web.Lists.GetByTitle($listName)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.