SharePoint-Farm PassPhrase anpassen

PassPhrase wiederherstellen

Immer wieder kommt es vor, dass man einen neuen Server in eine bestehende SharePoint Farm aufnehmen muss. Oft passiert es dabei, dass der Zugang unmöglich ist, weil die PassPhrase vergessen wurde oder gar nicht bekannt ist.

Nachfolgend wird kurz beschrieben, wie das beschriebene Problem gelöst werden mittels PowerShell gelöst werden kann und die PassPhrase sich neu setzen läßt. Ein Weg die alte auszulesen ist meines Wissens nicht möglich.

Vorgehen:

Als erstes startet man die PowerShell und lädt das SharePoint PowerShellPlugin mit

add-pssnapin microsoft.shahrepoint.powershell

Anschließend speichert man die PassPhrase in eine variable mit SecureString mittels

$pass = ConvertTo-SecureString -AsPlainText -Force

Convertierung SecureString

Dies startet einen Dialog in dem man die Password String eingeben muss und mit der Enter-Taste bestätigt.

Danach setzt man die PassPhrase neu mit

Set-SPPassPhrase -PassPhrase $pass -Confirm

Setzen der neuen PAssPhrase

Anschließend gibt man im Dialog die Phrase nochmals ein, schließt die Eingabe mit der Enter-Taste ab und bestätigt dies nochmals mit Y.

Nun kann man mit der neuen Phrase einen Server in die Farm aufnehmen.

 

Contentdatenbank umbenennen

Umbenennen einer Contentdatenbank

Das Umbenennen einer Contentdatenbank ist in manchen Fällen nötig. Zum Beispiel, wenn die automatisch generierte Datenbank im Namen eine GUID enthält. s.h. Bild

Ansicht Contendatenbank mit GUID

 

1.Schritt

Dazu startet man die PowerShell und lädt das Sharepoint-Modul mit

add-pssnapin microsoft.sharepoint.powershell

Anschließend listet man die jeweilige Datenbank für die einzelnen Webapplicationen auf.

get-spwebapplication | select-object Url, ContentDatabases | Format-List

Ansicht der Contentdatenbanken pro Webapplication

2.Schritt

Als nächsten Schritt wird die Datenbank abgehangen. Das erfolgt mittels

dismount-spcontentdatabase Datenbankname

Dismount Contentdatenbank

dies muss mit Y bestätigt werden..

3.Schritt

Anschließend kann man die Contentdatenbank im SQL Management Studio mittels Query umbenennen.

Umbenennen einer Contendatenbank im SQL Management Studio

4.Schritt

Abschließend muss die Contentdatenbank mittels

mount-spcontentdatabase „neuer Datenbankname“ -Webapplication URL

wieder angefügt werden.

Anhängen der Contentdatenbank

Suchhostcontroller-Dienst

Suchhostcontroller-Dienst startet nicht richtig

Oft passiert es, das der Suchhostcontroller-Dienst in der Zentraladministration dauerhaft auf „wird gestartet“ steht. Dieses Problem habe ich schon des öfteren bei SharePoint 2013 Farmen erlebt. Der Fehler im Suchhostcontroller-Dienst lässt sich auch nicht über einen Neustart des Servers beheben. Außerdem gibt es keine Möglichkeit diesen über die Zentraladministration wieder in einen definierten Zustand zu bringen. Einzig der Einsatz der PowerShell schaft hier Abhilfe.

Als erstes startet man die PowerShell als Farm-Administrator. Anschließend gibt man den Befehl

add-pssnapin microsoft.sharepoint.powershell

ein, um das PowerShell Snapin für SharePoint zu laden. Danach holt man sich den Dienst, welcher im „wird gestartet“ festhängt. Dies erfolgt mittels

$service = get-spserviceinstance | where {$_.Status -like „Provisioning“}

Nun kann der Dienst mit

$service.unprovision()

beendet und mit

$service.provision()

neu gestartet werden.

 

Eine Übersicht findet man unter Microsoft SPServiceInstance Referenz

SharePoint Webveröffentlichung mit Sophos UTM

In Zeiten wo das Microsoft Forefront Threat Management Gateway als Auslaufmodell betrachtet wird und die Preise für ein Microsoft Unified Access Gateway gegen eine SharePointveröffentlichung über dieses sprechen, ist es wichtig sich nach anderen Anbietern um zusehen. Mit der Beta 9.2 des Sophos UTM ist ein kleiner Schritt in die richtige Richtung unternommen wurden.

1. Vorraussetzungen

  • Funktionierende SharePoint Farm inklusive mindestens einer Webanwendung mit Sitecollection
  • Authentication Provider für Webanwendung steht auf NTLM und Basisauthentifizierung ist angehakt
  • Active Directory inkl. interner Domain
  • SharePoint Server ist teil der Domain
  • Installiertes und konfiguriertes Sophos UTM 9.2 mit mindestens zwei Netzkarten für das Domain-Netzwerk (bei mir 192.168.8….) und den externen Zugriff (bei mir 192.168.1….)
  • Eingerichteter Authentifizierungsserver im UTM inkl. SSO

2. Durchführung im Sophos UTM Webinterface

Als erstes erstellt man unter dem Punkt „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Echte Webserver“ einen neuen echten Webserver.

Echter Webserver

Dabei ist zu beachten, dass unter Host der SharePoint Server angelegt und eingetragen wird . Auch sollte man angeben über welche Schnittstelle der Host erreichbar ist. In unserem Fall ist das die interne (das Domain-Netzwerk).

SharePoint Host

 

Im zweiten Schritt legt man unter „Webserver Protection“ –> „Umkehrauthentifizierung“ –> Registerkarte  „Profile“ ein neues Authentifizierungsprofil an.

Umkehrauthentifizierung

Dabei ist zu beachten, dass unter Frontend-Bereich die externe IP bzw. die externe URL angegeben wird. Auch sollten unter Benutzer/Gruppen die Active Directory Users stehen, damit gegen das AD authentifiziert werden kann.

 Im dritten Schritt richtet man nun unter „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Virtuelle Webserver“ einen neuen virtuellen Webserver.

Virtueller Webserver

Dabei werden die externe IP bzw. Domain angegeben und der echte Webserver zugeordnet. Außerdem sollte man bei den Firewall-Profil aufpassen und eventuell ein neues Anlegen, da die Standardprofile von Sophos UTM mit SharePoint Probleme machen.

Im letzen Schritt ordnet man unter „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Site-Path-Routing“ das erstellte Umkehrauthentifizierungsprofil zu.

Umkehrauthetifizierungsprofil

 

 

 

 

 

 

 

Nun wird beim Aufruf der externen IP bzw. Domain das Loginformular des Sophos UTM angezeigt.

Login Formular

 

Damit nun auch noch der Login am SharePoint klappt müssen noch zwei weitere Schritte durchgeführt werden.

Zu ersten muss die externe Domain bzw. IP in der SharePoint Zentraladministration unter den Alternativen Zugriffspfaden für die Webanwendung eingetragen werden.

Zum zweiten muss im IIS des SharePoint WebFrontend Servers für die genutzte Webanwendung die interne Domain als default Domain in der Standartauthentifizierung hinterlegt werden.

Nun klappt der Login am SharePoint über die externe IP bzw. Domain mit dem Nutzernamen ohne Domainprefix und Passwort.

Backup-SPSite mit Powershell

Das nachfolgende Script erstellt eine SiteBackup (Backup-SPSite) einer SharePoint SiteCollection abwechselnd in zwei verschiedene Dateien. Dabei wird immer die Datei neu geschrieben welche älter ist.

Backup-SPSite

spSite-Full.ps1

Aufrufen kann man das Script dann mittels PowerShell

 

.\script.ps1 -WebApplication Link zur Webapplikation -source Pfad -file1 Datei1 -file2 Datei2

Abschließen kann der Befehl  in der Aufgabenplanung automatisiert werden.

Automatisches Löschen von Dateien nach X Wochen

In manchen Fällen ist es notwendig, dass Dateien nach Erreichen eines bestimmten Alters gelöscht werden. Dazu bietet Windows verschiedene Möglichkeiten. Eine davon wird nachfolgend vorgestellt.

Für das automatische Löschen verschiebt man erst die gewünschten Dateien mittels robocopy in der PowerShell.

robocopy Quelle Ziel /E /R:1 /W:20 /MOV /MINAGE:20
 

Dabei steht “ /E“ dafür, dass alle Unterverzeichnisse mit berücksichtigt werden.

Die Option „/R:1″ steht für die Wiederholung der Versuche beim Scheitern des Kopiervorganges.

Die Option „/W:20“ steht für die Wartezeit, welche beim Auftreten eines Fehlers eingehalten wird.

/MOV“ verschiebt die Dateien von der Quelle zum Ziel.

/MINAGE:20“ bedeutet, dass nur Dateien berücksichtigt werden, welche älter als 20 Tage sind.

Anschließend löscht man das Zielverzeichnis oder leert es.

rd /s /q Ziel

 oder

Remove-Item Ziel\* -Recurse

in der PowerShell.

 

 

 

DisableLoopBackCheck SharePoint

Mittels DisableLoopBackCheck ist es möglich die SharePoint gehosteten Seiten auch von dem Host selbst zu erreichen.

Hierzu muss in der Registry ein neuer Eintrag erstellt werden.

Das kann entweder mittels der PowerShell oder native mittels des Registryeditors erfolgen.

Bei der ersten Methode wird in der PowerShell nachfolgender Befehl ausgeführt:

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name „DisableLoopbackCheck“ -value „1“ -PropertyType dword

Für die zweite Methode öffnet man als erstes den Registryeditor. Das erfolgt über das Anklicken des

Start-Buttons

und anschließende Eingabe von

regedit

 Anschließend navigiert man im linken Baum zum Ordner

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

und erstellt dort ein neues

dword32

welches

DisableLoopBackCheck

heißt und als

value=1

als Wert besitzt.

Wichtig!!! Der LoopBackCheck verhindert DoS Attacken auf den Server. Deshalb ist es wichtig diese Funktion nur auf einem Testsystem zu deaktivieren!

 

Als Alternative in Produktivsystemen sollte man BackConnectionHostNames nutzen.

New-ItemProperty HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 -Name “BackConnectionHostNames” -value “HostHeader” -PropertyType multivalue

Erstellen einer Sitecollection mit PowerShell

Nachfolgend wird die Erstellung einer Sitecollection mit Powershell Schritt für Schritt beschrieben.

Vorrausetzungen:

  • Installierter und Konfigurierter SharePoint Server
  • mindestens eine erstellte Webanwendung
  • Zugriff auf den SharePoint via Powershell auf den SharePoint

 

Vorgehensweise:

Im ersten Schritt öffnen man die Powershell als Administrator. Dies geschieht mittels recht klick mit der Maus auf das Powershell Symbol und anschließendem Klick auf als Administrator ausführen. Danach läd man das SharePoint SnapIn mit

Add-PSSnapin Microsoft.SharePoint.PowerShell

Zu besseren Übersicht sollte nun eine separate Contentdatenbank für die zu erstellende Sitecollection angelegt werden. Das kann mit dem Befehl

New-SPContentDatabase „Datenbankname“ -DatabaseServer „SQL-Server-Instanz“ -WebApplication http(s)://webapplication

erfolgen.

Als nächstes lässt man sich die Namen der installierten Site Templates ausgeben. Das geschieht mit nachfolgendem Befehl

Get-SPWebTemplate | Sort-Object “Name”

Daraus kann man nun das benötigte Template z.B. Teamsite „STS#0“ herauslesen. Das wird zu Erstellen der Sitecollection später benötigt.

Im letzten Schritt erstellt man nun die Sitecolletion.

New-SPSite http(s)://Sitecollectionname -OwnerAlias „Domain\erster Sitecollectionadmin“ -Template „Templatename aus vorherigem Schritt“ -ContentDatabase „Datenbankname

Abschließend ist noch zu Erwähnen, dass die Erstellung mittels Powershell einen großen Vorteil bietet. Man kann genau angeben in welche Datenbank diese Sitecollection geht. Das ist theoretisch auch mit der Zentraladministration möglich, klappt aber nicht immer. Quota der Datenbanken spielen dabei eine Rolle.

 

 

Verkleinern von mehreren Log-Dateien im SharePoint

Das Verkleinern der Log-Dateien der einzelnen SharePoint-Content Datenbanken kann mittels dieses kleinen SQL-Scripts erfolgen

Exec sp_msforeachdb ‚
BEGIN
declare @LogFile nvarchar(2000)
USE [?]
Select @LogFile=Name From sys.database_files
where sys.database_files.type = 1 and sys.database_files.name LIKE “WSS_%“
if @LogFile IS NOT NULL
Begin
PRINT @LogFile
EXEC(“ALTER DATABASE [?] SET RECOVERY SIMPLE“)
DBCC SHRINKFILE (@LogFile, 1)
EXEC(“ALTER DATABASE [?] SET RECOVERY FULL“)
END
END‘
GO
 

Hierbei ist zu beachten, dass sys.database_files.name LIKE “WSS_%“ nur die Log-Dateien von Content-Datenbanken selektiert, welche mit „WSS_“ beginnen.

Sollen auch Log-Dateien anderer Datenbanken beachtet werden, muss diese Anweisung entsprechend angepasst werden.

 

[Update]

der Fehler:

Ein Sortierungskonflikt zwischen ‚Latin1_General_CI_AS_KS_WS‘ und ‚Latin1_General_CI_AS‘ im is not-Vorgang kann nicht aufgelöst werden.

kann mit einer Collate Anweisung behoben werden.

Farm-Backup mit PowerShell

Voraussetzung für ein Farm-Backup:

  • Administrativer Zugriff am SharePoint
  • UNC Freigabe zur Sicherung der Daten
  • optional Zugriff auf die Aufgabenplanung am Server zur Automatisierung

Durchführung:

Als erstes muss der SharePoint Service Account und SQL Service Account auf der UNC Freigabe berechtigt werden.
Anschließend führt man die PowerShell auf einem SharePoint Server der Farm als Administrator aus und führt man das PowerShell SnapIn für SharePoint mit nachfolgendem Befehl.

add-pssnapin microsoft.sharepoint.powershell

Danach kann das Backup durchgeführt werden.

backup-spfarm -Directory UNC-Freigabe -BackupMethod Full

Abschließend sollte die Logfile auf der UNC Freigabe geprüft werden.