Nützlichste SharePoint PowerShell-Befehle
Nov 12, 2018
Die nützlichsten SharePoint PowerShell-Befehle ermöglichen es Administratoren, Websites, Objekte und Berechtigungen effizienter zu verwalten als mit den nativen Tools. Cmdlets wie Get-SPSite und Get-SPWeb liefern detaillierte Informationen über Websites und Dateien, während New-SPSite, Remove-SPSite, und Set-SPUser die Erstellung, Löschung und Zugriffskontrolle von Websites vereinfachen. Durch die Automatisierung von Berichterstattung, Berechtigungsmanagement und Audits verbessern SharePoint PowerShell-Skripte die Produktivität, reduzieren Fehler und stärken die Sicherheit in verschiedenen Umgebungen.
SharePoint Server ist eine webbasierte Kollaborationsplattform, die mit Microsoft Office integriert ist. Um SharePoint-Website-Einstellungen zu konfigurieren, verwenden Systemadministratoren oft die SharePoint Management Shell, die mit dem SharePoint-Produkt installiert wird. Das Ausführen der SharePoint Management Shell ruft die Windows PowerShell-Laufzeitumgebung auf und führt eine Skriptdatei namens sharepoint.ps1 aus, die das Windows PowerShell-Snap-In für SharePoint lädt und einige Befehle ausführt. Diese Befehle sind nicht sehr wichtig; sie beinhalten die Auswahl von C:UsersUsername als Startverzeichnis für die Befehlsausführung und das Ausführen der neuesten Version der PowerShell-Konsole.
Eine bessere Option ist die Verwendung der PowerShell ISE. Sie enthält nicht nur viele speziell für die Verwaltung von SharePoint erstellte Cmdlets, sondern bietet auch farblich hervorgehobenen Code, eine Debug-Engine und eine Cmdlet-Suchmaschine.
Um das SharePoint-Snap-In zu laden, müssen wir den folgenden Befehl ausführen:
Add-PSSnapin Microsoft.SharePoint.PowerShell
Danach ist es ratsam, die PowerShell-Hilfe zu aktualisieren, um die neuesten Informationen über die Microsoft SharePoint PowerShell-Cmdlets zu erhalten:
Update-Help
Auch, welche Cmdlets sind im SharePoint-Snap-In verfügbar? Hier ist der Befehl, der alle für Sie auflistet:
Get-Command -Module "Microsoft.SharePoint.PowerShell"
Jetzt werfen wir einen genaueren Blick auf die nützlichsten SharePoint-Cmdlets.
Ausgewählte verwandte Inhalte:
Informationen zu SharePoint-Site abrufen
Get-SPSite cmdlet ist das Haupt-cmdlet zum Abrufen von Informationen über Ihre SharePoint-Website-Sammlungen. Es listet die URLs Ihrer SharePoint-Websites und deren Kompatibilitätsstufen (SharePoint-Versionen) auf.
Mit dem Parameter Select-Object in Verbindung mit diesem Cmdlet können wir spezifische Eigenschaften einer Website abrufen, wie den Websitebesitzer, Speichernutzung, maximales Kontingent und das Datum der letzten Inhaltsänderung:
Get-SPSite "http://sharepoint/sites/ent" | Select-Object url, owner, @{Expression={$_.Usage.Storage}}, @{Expression={$_.Audit.AuditFlags}}, readonly, LastContentModifiedDate, @{Express={$_.QuotaStorageMaximumLevel}}
Darüber hinaus können wir Informationen über alle Websites in unserer SharePoint-Farm in eine CSV-Datei exportieren:
Get-SPWebApplication http://sharepoint/ | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL, ID, ParentWebID | Export-CSV C:rootsharepointinventory.csv -NoTypeInformation
Wir können auch das Cmdlet Get-SPSite verwenden, um ein SharePoint PowerShell-Skript zu erstellen, das alle Gruppen und deren Mitglieder für eine bestimmte SharePoint-Website auflistet:
$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()
Wenn Sie einen vollständigen Berechtigungsbericht für eine SharePoint-Website benötigen, führen Sie den folgenden Code aus, wobei Sie die URL der SharePoint-Website ($SPSiteURL) und den Pfad zum Exportieren der Daten in eine CSV-Datei ($ExportFile) angeben:
[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();
Um eine bestimmte Datei auf einer SharePoint-Seite zu finden, müssen wir das Cmdlet Get-SPWeb verwenden. Hier ist ein Skript, das nach einer Datei sucht, deren Name das Wort „readme“ enthält, auf der Seite „http://sharepoint/sites/ent“:
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
Jetzt erstellen wir einen Bericht, der alle von einem bestimmten Benutzer erstellten Dateien ausgibt. Dieses Skript kann beispielsweise hilfreich sein, wenn ein Mitarbeiter das Unternehmen verlässt und Sie dessen Daten an andere Personen übertragen müssen.
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"]}
Unser letztes Skript mit dem Get-SPWeb Cmdlet berichtet über alle Dateien mit einer bestimmten Erweiterung:
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}}
Mit PowerShell SharePoint Sites und Objects verwalten
Neue SharePoint-Websites werden in der Regel mit einer Vorlage erstellt. Um eine Liste aller Websitevorlagen zu erhalten, führen Sie das Cmdlet Get-SPWebTemplate ohne Parameter aus.
Wir verwenden das Cmdlet Get-SPWebTemplate zusammen mit dem Cmdlet New-SPSite, um eine neue SharePoint-Website basierend auf einer Vorlage zu erstellen. Hier ist ein Beispiel für ein Skript zur Erstellung einer Website mit der Vorlage „Team Site“ (STS#0):
$template = Get-SPWebTemplate "STS#0"
New-SPSite -Url "http://sharepoint/sites/Netwrixteamsite" -OwnerAlias "enterpriset.simpson" -Template $template
Um eine Website zu löschen, verwenden wir das Cmdlet Remove-SPSite:
Remove-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -GradualDelete
Manchmal müssen Sie möglicherweise den Site-Collection-Administrator ändern. Führen Sie das folgende Skript aus, um dem angegebenen Benutzer Admin-Rechte hinzuzufügen:
Set-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -SecondaryOwnerAlias " i:0#.w|enterprisei.scur"
Jetzt sehen wir uns an, wie man Berechtigungen für unsere Sammlungen von Websites verwaltet. Zuerst fügen wir bestimmten Zugriffsrechten zu einem speziellen Active Directory Benutzerkonto hinzu. In diesem Fall wird dem Benutzer „enterpriset.simpson“ „Mitwirkenden“-Rechte für die Website „http://sharepoint/sites/ent“ gegeben. Beachten Sie, dass vor einem regulären Benutzernamen wie „enterpriset.simpson“ das Präfix „i:0#.w|“ verwendet werden muss. Andernfalls wird die Ausführung fehlschlagen und das Skript wird einen Fehler erzeugen.
Set-SPUser -Identity "i:0#.w|enterpriset.simpson" -Web http://sharepoint/sites/ent -AddPermissionLevel "Contributor"
Um Berechtigungen zu einer bestimmten AD security-Gruppe hinzuzufügen, verwenden Sie dasselbe Skript, geben aber den Namen der Gruppe anstelle des Namens des Benutzerkontos ein.
Um einen Benutzer zu einer Gruppe hinzuzufügen, verwenden Sie diesen Befehl:
Set-SPUser -Identity "i:0#.w|enterprisej.carter" -Web http://sharepoint/sites/ent -Group "Enterprise Owners"
Fazit
Wie Sie sehen können, ist das Verwalten und Berichten von SharePoint-Seiten mit SharePoint PowerShell-Skripten nicht so schwierig, wie es zunächst scheinen mag. Tatsächlich ist es in einigen Fällen viel schneller, ein Skript auszuführen, als einen Bericht aus dem Admin-Audit-Protokoll zu generieren.
Um Ihre Microsoft SharePoint-Umgebung sicher und hochverfügbar zu halten, müssen Sie auch Änderungen dort sorgfältig verfolgen. Netwrix Auditor for SharePoint kann leicht Berichte über SharePoint-Änderungen erstellen, die Ihnen vollständige Einblicke geben, wer was, wann und auf welcher SharePoint-Farm geändert hat. Sie können auch automatisch Benachrichtigungen über kritische Änderungen erhalten. Zusätzlich wird Ihnen Netwrix Auditor for SharePoint vollständige Informationen über aktuelle Berechtigungen und wie sie erteilt wurden liefern, sowie jegliche unterbrochene Vererbungen in Ihrer SharePoint-Umgebung anzeigen.
Teilen auf
Erfahren Sie mehr
Über den Autor
Jeff Melnick
Direktor für Systemtechnik
Jeff ist ehemaliger Director of Global Solutions Engineering bei Netwrix. Er ist ein langjähriger Netwrix-Blogger, Redner und Präsentator. Im Netwrix-Blog teilt Jeff Lifehacks, Tipps und Tricks, die Ihre Systemadministrationserfahrung erheblich verbessern können.
Erfahren Sie mehr zu diesem Thema
Powershell Delete File If Exists
PowerShell Write to File: "Out-File" und Dateiausgabetechniken
So erstellen Sie neue Active Directory-Benutzer mit PowerShell
So führen Sie ein PowerShell-Skript aus
Was ist PowerShell? Ein kompletter Leitfaden zu seinen Funktionen & Anwendungen