SharePoint Online: PowerShell Kullanarak Siteler Arasındaki Özellikleri Karşılaştırma
Hiç SharePoint Sitesi koleksiyonları veya siteleri arasında etkinleştirilen özellikleri karşılaştırmak istediniz mi? Bu şık PowerShell betiği tam olarak bunu yapıyor!
SharePoint Çevrimiçi Siteleri veya Site Koleksiyonları Arasındaki Özellikleri Karşılaştırmak için PowerShell
İki SharePoint Online sitesinde bulunan özellikleri karşılaştırmak için şu adımları izleyin:
- Aynı hesabı kullanarak her iki SharePoint Online sitesinde de oturum açın.
- Her site için site ayarları sayfasına gidin.
- Site ayarları sayfasında, “Site Eylemleri” altındaki “Site özellikleri”ne tıklayın.
- Her sitede etkinleştirilen özelliklerin listesini inceleyin ve farklılıkları not edin.
- İşlemi her iki site için de tekrarlayın.
İki SharePoint Online sitesindeki özellikleri karşılaştırmak için PowerShell'i kullanarak bu işlemi otomatikleştirelim! Bu PowerShell betiği, hem kaynak hem de hedef sitelerde etkinleştirilen özellikleri karşılaştırır ve farkı size sunar.
#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"
Function Compare-SPOFeatures
{
[cmdletbinding()]
Param(
[Parameter(Mandatory=$True)][URI]$SourceSiteURL,
[Parameter(Mandatory=$True)][URI]$TargetSiteURL,
[Parameter(Mandatory=$True)][ValidateSet('Site','Web')][String]$Scope
)
#Get Credentials to connect
$Cred = Get-Credential
#Get Source and Target Site Contexts
$SourceCtx = New-Object Microsoft.SharePoint.Client.ClientContext($SourceSiteURL.AbsoluteUri)
$SourceCtx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
$TargetCtx = New-Object Microsoft.SharePoint.Client.ClientContext($TargetSiteURL.AbsoluteUri)
$TargetCtx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Get Features based on Given Scope
Switch($Scope)
{
Site
{
Write-Host -f Yellow "Comparing Features Between Site Collections..."
$SourceFeatures = $SourceCtx.Site.Features
$TargetFeatures = $TargetCtx.Site.Features
$SourceCtx.Load($SourceFeatures)
$TargetCtx.Load($TargetFeatures)
$SourceCtx.ExecuteQuery()
$TargetCtx.ExecuteQuery()
}
Web
{
Write-Host -f Yellow "Comparing Features Between Sites..."
$SourceFeatures = $SourceCtx.Web.Features
$TargetFeatures = $TargetCtx.Web.Features
$SourceCtx.Load($SourceFeatures)
$TargetCtx.Load($TargetFeatures)
$SourceCtx.ExecuteQuery()
$TargetCtx.ExecuteQuery()
}
}
$MismatchedFeatures = New-Object System.Collections.Arraylist
ForEach($Feature in $SourceFeatures)
{
$Feature.Retrieve("DisplayName")
$SourceCtx.Load($Feature)
$SourceCtx.ExecuteQuery()
If(!($TargetFeatures.DefinitionId -Match $Feature.DefinitionId))
{
$FeatureEntry = New-Object System.Object
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Feature Name" -Value $Feature.DisplayName
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Feature ID" -Value $Feature.DefinitionID
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Activated In" -Value "Source Only"
$MismatchedFeatures.Add($FeatureEntry) | Out-Null
}
}
ForEach($Feature in $TargetFeatures)
{
$Feature.Retrieve("DisplayName")
$TargetCtx.Load($Feature)
$TargetCtx.ExecuteQuery()
If(!($SourceFeatures.DefinitionId -Match $Feature.DefinitionId))
{
$FeatureEntry = New-Object System.Object
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Feature Name" -Value $Feature.DisplayName
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Feature ID" -Value $Feature.DefinitionID
$FeatureEntry | Add-Member -MemberType NoteProperty -Name "Activated In" -Value "Target Only"
$MismatchedFeatures.Add($FeatureEntry) | Out-Null
}
}
Return $MismatchedFeatures
}
#Call the Function to compare features between site collections
Compare-SPOFeatures -SourceSiteURL "https://crescent.sharepoint.com/sites/marketing" -TargetSiteURL "https://crescent.sharepoint.com/sites/creditpipeline" -Scope Site
İki site arasında hem "Web" kapsamındaki hem de "Site" kapsamındaki özellikleri karşılaştırabilirsiniz.
Sonuç olarak, iki SharePoint Online sitesinde etkinleştirilen özelliklerin karşılaştırılması, iki site arasındaki farkları ve benzerlikleri anlamak için yararlı bir yöntemdir. Bu işlem site ayarlarını gözden geçirerek manuel olarak gerçekleştirilebilir, ancak etkinleştirilmiş özelliklerin listesini almak ve bunları karşılaştırmak için Microsoft PowerShell'i kullanmak etkili bir yaklaşım olacaktır. Bu bilgiler, bir sitede hangi özelliklerin eksik olduğunu belirlemek ve bunların etkinleştirilip etkinleştirilmeyeceğine karar vermek için kullanılabilir.
