Búsqueda de sitios web

¿Cómo conectarse a SharePoint Online usando CSOM PowerShell?


Requisito: Conéctese a SharePoint Online mediante PowerShell CSOM.

¿Cómo conectarse a SharePoint Online usando CSOM usando PowerShell?

Aunque el Shell de administración de SharePoint Online proporciona varios cmdlets de PowerShell para administrar SharePoint Online, es bastante limitante. La única forma de utilizar SharePoint PowerShell real es utilizar SharePoint CSOM. El modelo de objetos del lado del cliente es un subconjunto del modelo de objetos del servidor y puede utilizarse para complementarlo.

Requisitos previos: Descargar e instalar el SDK del cliente de SharePoint Online

Descargue e instale el SDK de componentes de cliente de SharePoint Online desde https://www.microsoft.com/en-us/download/details.aspx?id=42038. Una vez instalado, crea archivos ensamblados (DLL) en 16 subárboles de su computadora en C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\. yo>

¿Cómo escribir un script CSOM PowerShell para SharePoint Online?

En SharePoint local, tuvimos que iniciar sesión en SharePoint Server y escribir y ejecutar scripts de PowerShell. Como SharePoint Online está en la nube, ahora podemos escribir y ejecutar scripts de PowerShell de forma remota desde nuestras máquinas cliente. Este es el flujo típico de los scripts de CSOM PowerShell:

  • Paso 1: Agregar las referencias del ensamblado CSOM de SharePoint Online
  • Paso 2: Inicializar variables o parámetros de línea de comando (opcional)
  • Paso 3: crear el contexto del cliente
  • Paso 4: cargar objetos en variables
  • Paso 5: recuperar propiedades o llamar a métodos de los objetos

Paso 1: agregue las referencias de CSOM a su secuencia de comandos

Como primer paso, debe cargar las bibliotecas CSOM en el script de PowerShell.


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"

Si bien estas dos líneas del script son suficientes para la mayoría de las operaciones, debemos hacer referencia a las siguientes DLL cuando trabajamos con aplicaciones de servicios como perfiles de usuario, búsqueda, metadatos administrados, etc.

  • Perfil de usuario - Microsoft.SharePoint.Client.UserProfiles.dll
  • Metadatos administrados : Microsoft.SharePoint.Client.Taxonomy.dll
  • Buscar - Microsoft.SharePoint.Client.Search.dll
  • Flujo de trabajo : Microsoft.SharePoint.Client.WorkflowServices.dll

Paso 2: Inicializar variables

Digamos que desea conectarse a un sitio y obtener el nombre del sitio. Necesitamos decirle al script de PowerShell a qué sitio debemos conectarnos y recuperar su propiedad, ¿no es así? Este paso es completamente opcional. Sin embargo, ayuda a simplificar el guión.


#Set Parameters
$SiteUrl = "https://crescent.sharepoint.com/sites/projects"

También puede obtener el valor de los parámetros en tiempo de ejecución:


#Get Parameter Value
$SiteUrl = Read-Host "Enter the Site URL"

Paso 3: crear el contexto del cliente

Necesita credenciales válidas para conectarse al sitio de SharePoint Online. Es posible que desee obtener el nombre de usuario y la contraseña para conectarse en tiempo de ejecución, ¡o puede codificar las credenciales en el propio script!


#Get Credentials to connect to SharePoint Online site
$Cred = Get-Credential
   
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

Puede codificar las credenciales para conectarse como:


#Set user name and password to connect
$UserName="salaudeen@crescent.com"
$Password = "Password goes here"

#Create Credential object from given user name and password 
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
   
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = $Cred

Paso 4: cargar los objetos necesarios en variables para su procesamiento

Una vez que haya establecido el contexto, el siguiente paso es cargar objetos en variables. Supongamos que desea conectarse a un sitio y obtener el título del sitio. ¡Primero necesitamos cargar el objeto web!


#Get the Web Object
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()

Aquí hay otro ejemplo:


#Create a Variable and Assign it to Lists object of the Web
$Lists = $Ctx.web.Lists
$Ctx.load($Lists) 
$Ctx.ExecuteQuery() 

#Use the Variable to retrieve object properties
$Lists | Select Title, ItemCount 

En CSOM, para minimizar la transferencia de datos, las solicitudes se agrupan y luego se envían al servidor para su ejecución con el método ExecuteQuery().

Paso 5: recuperar propiedades o llamar a métodos de los objetos

Una vez que cargamos el objeto, podemos acceder a sus miembros para recuperar sus propiedades o llamar a sus métodos para realizar algunas operaciones. Aquí, en nuestro caso, recuperemos la propiedad "Título" del objeto web.


#Retrieve the Title Property of the Web
Write-host $Web.Title

De manera similar, puedes llamar a cualquier método de los objetos como:


$Web.Title = "New Web Title"
$Web.Update()
$Ctx.ExecuteQuery()

El script completo de los fragmentos anteriores se ve así:


#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"
    
#Set Parameter Value
$SiteUrl = "https://crescent.sharepoint.com/sites/projects"
 
#Get Credentials to connect to SharePoint Online site
$Cred = Get-Credential
   
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

#Get the Web Object
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()

#Retrieve the Title Property of the Web
Write-host $Web.Title

Puede usar la consola de Windows PowerShell, PowerShell ISE o Visual Studio Code para ejecutar los scripts de SharePoint Online CSOM PowerShell.

¿Cómo utilizar Credential Manager en scripts de PowerShell de SharePoint Online?

Para evitar ventanas emergentes de credenciales, puede almacenar sus credenciales en el almacén de credenciales de Windows y conectarse a SharePoint Online sin que se le solicite. ¡Esto es extremadamente útil para scripts de PowerShell desatendidos! A continuación se explica cómo crear una credencial almacenada: Abra el Panel de control >> Administrador de credenciales de Windows >> Seleccione Credenciales de Windows >> Haga clic en “Agregar una nueva credencial genérica” >> Ingrese las credenciales. He utilizado "SPO" como nombre de credencial aquí.

Ahora puede utilizar las credenciales almacenadas en el script de PowerShell como:


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/Marketing"

#Get Credentials from Windows Credentials Manager
$Cred = Get-PnPStoredCredential -Name "SPO"

#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($cred.UserName,$cred.Password)

#Get the Web
$Web=$Ctx.Web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()

Write-host $Web.Title

Uso conjunto de CSOM y SharePoint Online Management Shell

¡CSOM y SharePoint Online Management Shell se pueden usar juntos! A veces, es posible que lo necesitemos como ámbitos de script CSOM en el nivel de colección de sitios, y el Shell de administración de SharePoint Online tiene ámbito en el nivel de inquilino. Por ejemplo, desea recuperar todas las colecciones de sitios e iterar a través de cada colección de sitios y recuperar la cantidad de sitios web en cada sitio. A continuación se muestra un ejemplo de cómo conectarse al sitio de SharePoint Online mediante PowerShell:


#load powershell sharepoint online module
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
 
#Tenant Admin Site URL Parameter
$AdminSiteURL="https://crescent-admin.sharepoint.com"

#Get Credentials
$Cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -Credential $Cred
 
#Get All site collections
$SiteCollections = Get-SPOSite -Limit All
 
#Traverse through each site collection and get their subsits count
Foreach ($Site in $SiteCollections)
{
    #Setup context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($Site.Url)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

    #Get Immediate Subsites in the Site
    $Webs = $Ctx.Web.Webs
    $Ctx.Load($webs)
    $Ctx.executeQuery()
  
    Write-host "Number of Sub-sites in $($Site.Url):"$Webs.Count
}

¿Cómo obtener todos los métodos y propiedades disponibles de los objetos de SharePoint Online?

Si bien los documentos de Microsoft sirven como fuente auténtica, puede utilizar SharePoint Online Client Browser, ya que es una excelente herramienta para explorar objetos en CSOM.

Éstos son algunos de mis scripts de PowerShell CSOM de SharePoint Online:

  • CSOM de SharePoint Online para actualizar el elemento de la lista en PowerShell
  • CSOM de PowerShell de SharePoint Online para agregar un elemento de lista
  • SharePoint Online PowerShell CSOM para crear carpeta
  • SharePoint Online PowerShell CSOM para crear una colección de sitios
  • SharePoint Online PowerShell CSOM para obtener elementos de la lista
  • CSOM de SharePoint Online Powershell con MFA
  • SharePoint Online Powershell CSOM para cargar archivos
  • CSOM de SharePoint Online para descargar archivos PowerShell

Por último, pero no menos importante: Patrones y prácticas de SharePoint (PnP) contiene una biblioteca de cmdlets de PowerShell que le permite realizar operaciones complejas con un solo cmdlet.

Resumen

En conclusión, conectarse a SharePoint Online usando CSOM (Modelo de objetos del lado del cliente) PowerShell es un proceso simple que le permite realizar varias acciones en su sitio de SharePoint Online usando cmdlets de PowerShell. Al descargar e instalar SharePoint Online Management Shell o CSOM SDK, importar el módulo de SharePoint Online o hacer referencia a ensamblados de CSOM, conectarse a SharePoint Online con sus credenciales de administrador y ejecutar los cmdlets adecuados, puede automatizar tareas en SharePoint Online. Es importante tener en cuenta que debe tener los permisos necesarios para acceder a SharePoint Online y realizar las acciones que desee realizar. Si sigue estos pasos, puede conectarse a SharePoint Online usando CSOM PowerShell, lo que le permitirá realizar varias acciones en su sitio de SharePoint Online usando cmdlets de PowerShell. Esta puede ser una herramienta poderosa para automatizar tareas, administrar sitios y contenido y solucionar problemas.

Preguntas frecuentes:

¿Cómo conectarse a SharePoint Online usando PnP PowerShell?

Como primer paso, debe instalar el módulo PnP.PowerShell en su computadora usando el comando de PowerShell “Install-Module”. Luego podrá conectarse a SharePoint Online desde PnP PowerShell y realizar cualquier operación como recuperar datos, manipular objetos, actualizar configuraciones, etc.
Más información: ¿Cómo conectarse a SharePoint Online desde el módulo PnP PowerShell?

¿Cómo me conecto a SharePoint Online con cuentas habilitadas para MFA desde PowerShell?

Para conectarse a SharePoint Online desde PowerShell con una cuenta habilitada para MFA, estas son las opciones: Puede crear una contraseña de aplicación, dejar el parámetro -Credencial del cmdlet "Connect-SPOService" e intentar conectarse, use -Interruptor interactivo para PnP PowerShell Connect -Cmdlet PnPOnline.
Más información: Conéctese a SharePoint Online desde PowerShell con MFA

¿Cómo me conecto al shell de administración de SharePoint Online?

Instale el Shell de administración de SharePoint Online o el módulo Microsoft.Online.SharePoint.PowerShell y luego conéctese a SharePoint Online mediante el cmdlet Connect-SPOService.
Más información: Conéctese al Shell de administración de SharePoint Online

Artículos relacionados