SharePoint için En Yararlı PowerShell Komutları
SharePoint Server, Microsoft Office ile entegre olan web tabanlı bir işbirliği platformudur. SharePoint site ayarlarını yapılandırmak için sistem yöneticileri genellikle SharePoint ürünüyle birlikte yüklenen SharePoint Yönetim Kabuğu'nu kullanır. SharePoint Yönetim Kabuğu'nu çalıştırmak, Windows PowerShell çalışma zamanı ortamını çağırır ve SharePoint için Windows PowerShell ek bileşenini yükleyen ve birkaç komutu çalıştıran sharepoint.ps1 adlı bir komut dosyasını çalıştırır. Bu komutlar çok önemli değil; komut yürütme için ana konum olarak C:UsersUsername'in seçilmesini ve PowerShell konsolunun en son sürümünün çalıştırılmasını içerir.
Daha iyi bir seçenek PowerShell ISE'yi kullanmaktır. Özellikle SharePoint'i yönetmek için oluşturulmuş birçok cmdlet'i içermekle kalmaz, aynı zamanda renklerle vurgulanmış kod, bir hata ayıklama motoru ve bir cmdlet arama motoru da sunar.
SharePoint ek bileşenini yüklemek için aşağıdaki komutu çalıştırmamız gerekir:
Add-PSSnapin Microsoft.SharePoint.PowerShellBundan sonra, Microsoft SharePoint PowerShell cmdlet'leri hakkında en son bilgileri almak için PowerShell yardımını güncellemek akıllıca olacaktır:
Update-HelpPeki SharePoint ek bileşeninde hangi cmdlet'ler mevcut? İşte sizin için hepsini listeleyecek komut:
Get-Command -Module "Microsoft.SharePoint.PowerShell"
Şimdi en kullanışlı SharePoint cmdlet’lerine daha yakından bakalım.
SharePoint Site Bilgilerini Alma
Get-SPSite cmdlet'i, SharePoint site koleksiyonlarınız hakkında bilgi almaya yönelik ana cmdlet'tir. SharePoint sitelerinizin URL'lerini ve uyumluluk düzeylerini (SharePoint sürümleri) listeler.
Bu cmdlet'le Select-Object parametresini kullanarak site sahibi, depolama kullanımı, maksimum kota düzeyi ve içeriğin son değiştirilme tarihi gibi bir siteyle ilgili belirli özellikleri alabiliriz:
Get-SPSite "http://sharepoint/sites/ent" | Select-Object url, owner, @{Expression={$_.Usage.Storage}}, @{Expression={$_.Audit.AuditFlags}}, readonly, LastContentModifiedDate, @{Express={$_.QuotaStorageMaximumLevel}}Ayrıca SharePoint grubumuzdaki tüm sitelerle ilgili bilgileri bir csv dosyasına aktarabiliriz:
Get-SPWebApplication http://sharepoint/ | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL, ID, ParentWebID | Export-CSV C:rootsharepointinventory.csv -NoTypeInformationBelirli bir SharePoint sitesi için tüm grupları ve üyelerini listeleyen bir SharePoint PowerShell betiği oluşturmak için Get-SPSite cmdlet'ini de kullanabiliriz:
$site = Get-SPSite http://sharepoint/sites/ent/
$groups = $site.RootWeb.sitegroups
foreach ($grp in $groups) {"Group: " + $grp.name; foreach ($user in $grp.users) {" User: " + $user.name} }
$site.Dispose()Bir SharePoint sitesi için eksiksiz bir izin raporuna ihtiyacınız varsa, SharePoint sitesi URL'sini ($SPSiteURL) ve verileri bir csv dosyasına ($ExportFile) aktarma yolunu belirterek aşağıdaki kodu çalıştırın:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$SPSiteUrl = "http://sharepoint/sites/ent"
$SPSite = New-Object Microsoft.SharePoint.SPSite($SPSiteUrl);
$ExportFile = "C:rootPermissions.csv"
"Web Title,Web URL,List Title,User or Group,Role,Inherited" | out-file $ExportFile
foreach ($WebPath in $SPSite.AllWebs)
{
if ($WebPath.HasUniqueRoleAssignments)
{
$SPRoles = $WebPath.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + "N/A" + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name + "," + $WebPath.HasUniqueRoleAssignments | out-file $ExportFile -append
}
}
}
foreach ($List in $WebPath.Lists)
{
if ($List.HasUniqueRoleAssignments)
{
$SPRoles = $List.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + $List.Title + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name | out-file $ExportFile -append
}
}
}
}
}
$SPSite.Dispose();Bir SharePoint sitesinde belirli bir dosyayı bulmak için Get-SPWeb cmdlet'ini kullanmamız gerekir. İşte “http://sharepoint/sites/ent” sitesinde adı “benioku” kelimesini içeren bir dosyayı arayan bir komut dosyası:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -like "*readme*" } |
Select Name, {$_.File.Length}, url
Şimdi belirli bir kullanıcı tarafından oluşturulan tüm dosyaların çıktısını alacak bir rapor oluşturalım. Bu komut dosyası, örneğin bir çalışan şirketten ayrıldığında ve onun verilerini başkalarına aktarmanız gerektiğinde yararlı olabilir.
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_["Created By"] -like "*system*" } |
Select Name, url, {$_["Created By"]}Get-SPWeb cmdlet'ini kullanan son komut dosyamız, belirtilen uzantıya sahip tüm dosyaları rapor eder:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -Like "*.rtf" } |
Select Name,
@{Name="URL";
Expression={$_.ParentList.ParentWeb.Url + "/" + $_.Url}}SharePoint Sitelerini ve Nesnelerini Yönetmek için PowerShell'i Kullanma
Yeni SharePoint siteleri genellikle bir şablon kullanılarak oluşturulur. Tüm site şablonlarının bir listesini almak için Get-SPWebTemplate cmdlet'ini hiçbir parametre olmadan çalıştırın.
Bir şablona dayalı yeni bir SharePoint sitesi oluşturmak için Get-SPWebTemplate cmdlet'ini New-SPSite cmdlet'iyle birlikte kullanıyoruz. Burada “Ekip Sitesi” şablonunu (STS#0) kullanarak site oluşturmaya yönelik bir komut dosyası örneği verilmiştir:
$template = Get-SPWebTemplate "STS#0"
New-SPSite -Url "http://sharepoint/sites/Netwrixteamsite" -OwnerAlias "enterpriset.simpson" -Template $templateBir siteyi silmek için Remove-SPSite cmdlet'ini kullanırız:
Remove-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -GradualDeleteBazen site koleksiyonu yöneticisini değiştirmeniz gerekebilir. Belirtilen kullanıcıya yönetici hakları eklemek için aşağıdaki betiği çalıştırın:
Set-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -SecondaryOwnerAlias " i:0#.w|enterprisei.scur"Şimdi site koleksiyonlarımıza yönelik izinleri nasıl yöneteceğimizi görelim. Öncelikle belirli bir Active Directory kullanıcı hesabına belirli erişim haklarını ekleyelim. Bu durumda “enterpriset.simpson” kullanıcısına “http://sharepoint/sites/ent” sitesi için “Katkıda Bulunan” hakları verilecektir. "enterpriset.simpson" gibi normal bir kullanıcı hesabı adından önce "i:0#.w|" önekini kullanmanız gerektiğini unutmayın. Aksi takdirde yürütme başarısız olur ve komut dosyası bir hata üretir.
Set-SPUser -Identity "i:0#.w|enterpriset.simpson" -Web http://sharepoint/sites/ent -AddPermissionLevel "Contributor"Belirli bir AD güvenlik grubuna izin eklemek için aynı komut dosyasını kullanın ancak kullanıcı hesabının adı yerine grubun adını yazın.
Bir gruba kullanıcı eklemek için şu komutu kullanın:
Set-SPUser -Identity "i:0#.w|enterprisej.carter" -Web http://sharepoint/sites/ent -Group "Enterprise Owners"Çözüm
Gördüğünüz gibi SharePoint PowerShell scriptlerini kullanarak SharePoint sitelerini yönetmek ve raporlamak ilk başta sanıldığı kadar zor değil. Aslında bazı durumlarda yönetici denetim günlüğünden rapor oluşturmak yerine bir komut dosyasını çalıştırmak çok daha hızlıdır.
Microsoft SharePoint ortamınızı güvenli ve yüksek düzeyde kullanılabilir durumda tutmak için buradaki değişiklikleri de dikkatle izlemeniz gerekir. Netwrix Auditor for SharePoint, SharePoint değişiklikleriyle ilgili kolayca raporlar oluşturarak kimin neyi, ne zaman ve hangi SharePoint çiftliğinde değiştirdiğine dair tam görünürlük sağlar. Ayrıca kritik değişikliklerle ilgili bildirimleri otomatik olarak alabilirsiniz. Ayrıca, Netwrix Auditor for SharePoint size mevcut izinler ve bunların nasıl verildiği hakkında tam bilgi vermenin yanı sıra, SharePoint ortamınızdaki bozuk devralmaları da gösterecektir.


