CSOM PowerShell kullanarak SharePoint Online'a Nasıl Bağlanılır?


Gereksinim: PowerShell CSOM kullanarak SharePoint Online'a bağlanın.

PowerShell kullanarak CSOM kullanarak SharePoint Online'a nasıl bağlanılır?

SharePoint Online Yönetim Kabuğu, SharePoint Online'ı yönetmek için çeşitli PowerShell Cmdlet'leri sağlasa da, bu oldukça sınırlayıcıdır. Gerçek SharePoint PowerShell'i gerçekleştirmenin tek yolu SharePoint CSOM'u kullanmaktır. İstemci Tarafı Nesne Modeli, Sunucu Nesne Modelinin bir alt kümesidir ve onu desteklemek için kullanılabilir.

Ön Koşullar: SharePoint Online İstemci SDK'sını İndirin ve Yükleyin

https://www.microsoft.com/en-us/download/details.aspx?id=42038 adresinden SharePoint Online İstemci Bileşenleri SDK'sını indirip yükleyin. Kurulduktan sonra, bilgisayarınızda C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\ konumunda 16 kovanda derleme (DLL) dosyaları oluşturur. ben>

SharePoint Online için CSOM PowerShell Betiği nasıl yazılır?

SharePoint On-Premises'ta, SharePoint Sunucusunda oturum açmamız ve PowerShell komut dosyalarını yazmamız ve çalıştırmamız gerekiyordu. SharePoint Online bulutta olduğundan artık PowerShell betiklerini istemci makinelerimizden uzaktan yazıp çalıştırabiliyoruz. CSOM PowerShell komut dosyalarının tipik akışı aşağıda verilmiştir:

  • 1. Adım: SharePoint Online CSOM derleme referanslarını ekleyin
  • Adım 2: Değişkenleri veya komut satırı parametrelerini başlatın (isteğe bağlı)
  • 3. Adım: İstemci Bağlamını Oluşturun
  • Adım 4: Nesneleri değişkenlere yükleyin
  • Adım 5: Nesnelerin özelliklerini veya Çağrı yöntemlerini alın

1. Adım: CSOM referanslarını betiğinize ekleyin

İlk adım olarak CSOM kitaplıklarını PowerShell betiğine yüklemeniz gerekir.


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"

Betikteki bu iki satır çoğu işlem için yeterli olsa da, kullanıcı profilleri, arama, yönetilen meta veriler vb. hizmet uygulamalarıyla uğraşırken aşağıdaki DLL'lere başvurmamız gerekir.

  • Kullanıcı Profili - Microsoft.SharePoint.Client.UserProfiles.dll
  • Yönetilen Meta Veriler - Microsoft.SharePoint.Client.Taxonomy.dll
  • Arama - Microsoft.SharePoint.Client.Search.dll
  • İş Akışı - Microsoft.SharePoint.Client.WorkflowServices.dll

Adım 2: Değişkenleri Başlatın

Diyelim ki bir siteye bağlanıp site adını almak istiyorsunuz! PowerShell betiğine hangi siteye bağlanmamız ve özelliğini almamız gerektiğini söylememiz gerekiyor değil mi? Bu adım tamamen isteğe bağlıdır. Ancak betiğin basitleştirilmesine yardımcı olur.


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

Ayrıca parametrelerin değerini çalışma zamanında da alabilirsiniz:


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

3. Adım: İstemci Bağlamını Oluşturun

SharePoint Online sitesine bağlanmak için geçerli kimlik bilgilerine ihtiyacınız var. Çalışma zamanında bağlanmak için kullanıcı adını ve parolayı almak isteyebilirsiniz veya kimlik bilgilerini komut dosyasının kendisine sabit kodlayabilirsiniz!


#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)

Bağlanmak için kimlik bilgilerini şu şekilde kodlayabilirsiniz:


#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

Adım 4: İşleme için Gerekli Nesneleri Değişkenlere Yükleyin

Bağlamı oluşturduktan sonraki adım, nesneleri değişkenlere yüklemektir. Diyelim ki bir siteye bağlanmak ve site başlığını almak istiyorsunuz. Önce web nesnesini yüklememiz gerekiyor!


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

İşte başka bir örnek:


#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 

CSOM'da, veri aktarımını en aza indirmek için İstekler bir araya toplanır ve ardından ExecuteQuery() yöntemiyle çalıştırılmak üzere sunucuya gönderilir.

Adım 5: Nesnelerin Özelliklerini veya Çağrı Yöntemlerini Alma

Nesneyi yükledikten sonra, özelliklerini almak için üyelerine erişebilir veya bazı işlemleri gerçekleştirmek için yöntemlerini çağırabiliriz. Burada bizim durumumuzda web nesnesinin “Title” özelliğini alalım.


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

Benzer şekilde, nesnelerin herhangi bir yöntemini şu şekilde çağırabilirsiniz:


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

Yukarıdaki parçaların tam komut dosyası şuna benzer:


#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

SharePoint Online CSOM PowerShell komut dosyalarını yürütmek için Windows PowerShell konsolunu, PowerShell ISE'yi veya Visual Studio Code'u kullanabilirsiniz.

SharePoint Online PowerShell komut dosyalarında Kimlik Bilgisi Yöneticisi nasıl kullanılır?

Kimlik bilgisi açılır pencerelerini önlemek için kimlik bilgilerinizi Windows kimlik bilgileri deposunda saklayabilir ve herhangi bir soru sormadan SharePoint Online'a bağlanabilirsiniz! Bu, gözetimsiz PowerShell betikleri için son derece kullanışlıdır! Saklanan bir kimlik bilgisini şu şekilde oluşturabilirsiniz: Denetim Masası'nı açın >> Windows kimlik bilgisi yöneticisi >> Windows Kimlik Bilgileri'ni seçin >> “Yeni bir Genel kimlik bilgisi ekle”ye tıklayın >> Kimlik bilgilerini girin. Burada kimlik bilgisi adı olarak “SPO”yu kullandım.

Artık PowerShell betiğinde saklanan kimlik bilgilerini şu şekilde kullanabilirsiniz:


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

CSOM ve SharePoint Çevrimiçi Yönetim Kabuğunu Birlikte Kullanma

CSOM ve SharePoint Çevrimiçi Yönetim Kabuğu birlikte kullanılabilir! Bazen site koleksiyonu düzeyinde CSOM komut dosyası kapsamları olarak buna ihtiyaç duyabiliriz ve SharePoint Çevrimiçi Yönetim Kabuğu'nun kapsamı kiracı düzeyindedir. Örneğin, tüm site koleksiyonlarını almak, her site koleksiyonunu yinelemek ve her sitedeki web sayısını almak istiyorsunuz. PowerShell kullanarak SharePoint Online sitesine nasıl bağlanılacağına dair bir örnek:


#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
}

SharePoint Çevrimiçi Nesnelerinin Mevcut Tüm Yöntemleri ve Özellikleri Nasıl Elde Edilir?

Microsoft belgeleri orijinal bir kaynak görevi görse de CSOM'daki nesneleri keşfetmek için harika bir araç olduğundan SharePoint Çevrimiçi İstemci Tarayıcısını kullanabilirsiniz.

İşte SharePoint Online CSOM PowerShell komut dosyalarımdan bazıları:

  • PowerShell'de Liste Öğesini Güncellemek için SharePoint Online CSOM
  • Liste Öğesi Eklemek için SharePoint Online PowerShell CSOM
  • Klasör Oluşturmak için SharePoint Online PowerShell CSOM
  • Site Koleksiyonu Oluşturmak için SharePoint Online PowerShell CSOM
  • Liste Öğelerini Almak için SharePoint Online PowerShell CSOM
  • MFA ile SharePoint Çevrimiçi Powershell CSOM
  • Dosyayı yüklemek için SharePoint Online Powershell CSOM
  • PowerShell Dosyasını İndirmek için SharePoint Online CSOM

Son fakat bir o kadar önemli: SharePoint Kalıpları ve Uygulamaları (PnP), tek bir cmdlet ile karmaşık işlemleri gerçekleştirmenize olanak tanıyan bir PowerShell cmdlet kitaplığı içerir.

Özet

Sonuç olarak, CSOM (İstemci Tarafı Nesne Modeli) kullanarak SharePoint Online'a bağlanma PowerShell, PowerShell cmdlet'lerini kullanarak SharePoint Online sitenizde çeşitli eylemler gerçekleştirmenize olanak tanıyan basit bir işlemdir. SharePoint Online Yönetim Kabuğu veya CSOM SDK'sını indirip yükleyerek, SharePoint Online modülünü içe aktararak veya CSOM derlemelerine başvurarak, yönetici kimlik bilgilerinizi kullanarak SharePoint Online'a bağlanarak ve uygun cmdlet'leri çalıştırarak, SharePoint Online'daki görevleri otomatikleştirebilirsiniz. SharePoint Online'a erişmek ve gerçekleştirmek istediğiniz eylemleri gerçekleştirmek için gerekli izinlere sahip olmanız gerektiğini unutmayın. Bu adımları izleyerek CSOM PowerShell'i kullanarak SharePoint Online'a bağlanabilirsiniz ve bu, PowerShell cmdlet'lerini kullanarak SharePoint Online sitenizde çeşitli eylemler gerçekleştirmenize olanak tanır. Bu, görevleri otomatikleştirmek, siteleri ve içeriği yönetmek ve sorunları gidermek için güçlü bir araç olabilir.

Sıkça Sorulan Sorular:

PnP PowerShell kullanarak SharePoint Online'a nasıl bağlanılır?

İlk adım olarak “Install-Module” PowerShell komutunu kullanarak PnP.PowerShell modülünü bilgisayarınıza kurmanız gerekmektedir. Daha sonra PnP PowerShell'den SharePoint Online'a bağlanabilir ve veri alma, nesneleri değiştirme, ayarları güncelleme vb. herhangi bir işlemi gerçekleştirebilirsiniz.
Daha fazla bilgi: PnP PowerShell Modülünden SharePoint Online'a Nasıl Bağlanılır?

PowerShell'den MFA özellikli hesaplarla SharePoint Online'a nasıl bağlanırım?

MFA özellikli bir hesapla PowerShell'den SharePoint Online'a bağlanmak için seçenekler şunlardır: Bir Uygulama Şifresi oluşturabilir, “Connect-SPOService” cmdlet'inden -Credential parametresini bırakıp bağlanmayı deneyebilir, PnP PowerShell Connect için -Interactive anahtarını kullanabilirsiniz. -PnPOnline cmdlet'i.
Daha fazla bilgi: MFA ile PowerShell'den SharePoint Online'a bağlanma

SharePoint Çevrimiçi Yönetim kabuğuna nasıl bağlanırım?

SharePoint Çevrimiçi Yönetim Kabuğu'nu veya Microsoft.Online.SharePoint.PowerShell modülünü yükleyin ve ardından Connect-SPOService cmdlet'ini kullanarak SharePoint Online'a bağlanın.
Daha fazla bilgi: SharePoint Çevrimiçi Yönetim Kabuğu'na bağlanma

İlgili makaleler