Browsed by
Kategorie: ITech

SCCM(1910) Betriebssystemabbild Windows 10 (1909) nicht aktualisieren!

SCCM(1910) Betriebssystemabbild Windows 10 (1909) nicht aktualisieren!

Schmerzlich durfte ich lernen, dass 2020 herausgegebene Updates ins Abbild integriert dazu führen, dass Tasksequenzen im Abschnitt „Windows und ConfigMgr einrichten“ hängen bleiben. Da gleichzeitig Arbeiten an der CA und den Gruppenrichtlinien statt gefunden hatten und erst Tage nach dem Integrieren der Updates ein neuer Rechner installiert wurde, war die Fehlersuche… erfreulich.

Ich vermute, dass das Problem mit Zertifikatsanforderungen zusammen hängt und bei reinen HTTP Installationen von SCCM nicht auftritt.

Erstellen eines neuen Abbildes und integrieren aller Updates bis einschließlich Dezember 2019 führte dazu, dass es wieder einwandfrei funktioniert.

In Windows 1803 gab es ein ähnliches Problem, das erst in 1809 behoben wurde; daher heißt die Lösung vermutlich „Warten auf 2004“. Damals kommunizierten meine Clients im Testbetrieb noch via HTTP statt HTTPS und waren nicht betroffen.

###EDIT### Problem taucht im März Updates nicht mehr auf; nur die Februar Updates machen die Probleme

Failovercluster startet nicht

Failovercluster startet nicht

Wenn der Cluster mal hängt, ist es meistens eilig… Blöd dabei: So ein Absturz führt meistens zu einem Checkdisk.

Vermeiden kann man das via:

Get-ClusterResource | where {$_.ResourceType -eq "Physical Disk"} | Set-ClusterParameter -Name DiskRunChkDsk -Value 4 -Verbose

Und schon startet der Cluster in 30 Sekunden statt 30 Stunden 🙂

Rechner einfach an- und ausschalten sowie SCCM Policy aktualisieren

Rechner einfach an- und ausschalten sowie SCCM Policy aktualisieren

Ich habe ein kleines grafisches Powershellprogramm gebaut, mit dem man aus einer per Startparameter definierten Gruppe einzelne Rechner auswählen, starten, stoppen und deren Policy aktualisieren kann.

Das eigentliche Programm ist in der Datei CCM-Erweiterung.ps1

In Zeile 85 muss die Domäne angepasst werden.

Zeile 96 und 97 verweisen auf Computer, auf denen WOL.exe ausgeführt wird (https://www.gammadyne.com/cmdline.htm#wol)

In Zeile 138 kann ein eigenes in base64 koviertiertes Bild eingefügt werden.

Ab Zeile 180-199 werden die Bereiche für den Startparameter definiert.

In Zeile 219 muss der Registrydateipfad angegeben werden – die Reg-Datei muss den Wert für den SCCM-Server enthalten.

 

Es wird gestartet über CCM-Erweiterung-launcher.ps1 -start %PARAMETER%

Die Datei prüft kurz ob der ausführende Benutzer einer der Administratoren ist (bei mir fangen Admins mit dem Präfix adm an) und fordert andernfalls Credentials.

Hier müssen die Pfade in Zeile 6 und 11 angepasst werden.

CCM-Erweiterung

Wake on Lan in verschiedenen VLANs aus SCCM Gruppen

Wake on Lan in verschiedenen VLANs aus SCCM Gruppen

Ich habe das Problem, dass ich Computer in verschiedenen VLANs um 22 Uhr aufwecken muss.

Das klappt mit SCCM Bordmitteln nur bedingt.

Ich habe ein Script erstellt, dass die Mitglieder der betroffenen Gruppe abfragt, in einem zweiten Schritt die Mac-Adresse holt und im dritten Schritt auf zwei Servern, die in unterschiedlichen VLANs Mitglied sind, ein WOL Freeware-Tool ausführt.

https://www.gammadyne.com/cmdline.htm#wol

 

set-executionpolicy -Executionpolicy Bypass -Force
import-module "C:\program files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1"
cd THL:
$Geraete=Get-CMDevice -CollectionName "Windows Updates automatisch"|select Name,Status,ResourceID
$ArrayList=[System.Collections.ArrayList]
$datum=get-date
foreach ($Computer in $Geraete){
$Details=Get-CMResource -ResourceID $Computer.ResourceID -Fast
$Befehl="c:\wol\wol.exe "+$Details.MacAddresses
$Befehlsb=[scriptblock]::Create($Befehl)
Write-Host $Computer.Name $Befehl
Invoke-Command -ComputerName wol01-fhl.*.de -ScriptBlock $Befehlsb
Invoke-Command -ComputerName wol02-fhl.*.de -ScriptBlock $Befehlsb
}
Computer wieder ausschalten nach Wake on Lan

Computer wieder ausschalten nach Wake on Lan

Bei SCCM gibt es leider von Haus aus keine schöne Möglichkeit, Rechner, die man per Wake-on-Lan geweckt hat, nach abgeschlossener Installation wieder herunter zu fahren.

Ich habe auf dem SCCM Server ein Script erstellt, das als tägliche 0 Uhr Aufgabe läuft, die „geweckte Gruppe“ abfragt und dann die Rechner herunter fährt, die weniger als 5 Stunden laufen und keine angemeldeten Benutzer haben.

Das Logging funktioniert in dieser Version noch nicht einwandfrei, hatte aber gerade keine Prio, wird irgendwann mal nachgebessert

 

set-executionpolicy -Executionpolicy Bypass -Force
import-module "C:\program files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1"
cd THL:

$Geraete=Get-CMDevice -CollectionName "Herunterfahren wenn weniger 5 Stunden on"|select Name,Status
$ArrayList=[System.Collections.ArrayList]
$datum=get-date

foreach ($Computer in $Geraete){

$nein=$null
$LetzterStart = ""
$LS = ""
if (Test-Connection -Computername $Computer.Name -Quiet){
$LetzterStart = (Get-WmiObject Win32_OperatingSystem -ComputerName $Computer.Name).LastBootUpTime
$LS = [Management.ManagementDateTimeConverter]::ToDateTime($LetzterStart)
$Uptime=$LS.AddHours(5)

if ($Uptime -lt $datum)
{
$log = $log + $Computer.Name + "-"+ "Länger on - keine Aktion" + "`r`n"
}
Else
{
Stop-Computer -Computername $Computer.Name -ErrorVariable nein
if($nein -lt 1)
{
$Ergebnis = "Rebootet"
}
Else
{
$Ergebnis = "Benutzer angemeldet"
}
$log = $log + $Computer.Name + "-"+ $Ergebnis + "`r`n"
}
}
}
$log | out-file "c:\log.txt"
Sharepoint in einer Vertrauensstellung – Domainübergreifende Rechte

Sharepoint in einer Vertrauensstellung – Domainübergreifende Rechte

Sharepoint überrascht auch beim Berechtigen von Benutzern aus einer anderen Domäne nicht durch „klappt einfach so“.

Natürlich muss hier per Powershell nachgearbeitet werden – angegeben werden, in welchen Domänen User gesucht werden sollen.

Nach Anpassen und Ausführen des Scripts funktioniert der domänenübergreifende Zugriff.

 

$pp = Get-SPWebApplication https://server3.kollossalfesch.de
$pp.PeoplePickerSettings.SearchActiveDirectoryDomains
$domaenea = New-Object Microsoft.SharePoint.Administration.SPPeoplePickerSearchActiveDirectoryDomain
$domaenea.DomainName = "kollossalfesch.de"
$domaenea.ShortDomainName = "kollossalfesch"
$pp.PeoplePickerSettings.SearchActiveDirectoryDomains.Add($domaenea)
$domaeneb = New-Object Microsoft.SharePoint.Administration.SPPeoplePickerSearchActiveDirectoryDomain
$domaeneb.DomainName = "stein.zone"
$domaeneb.ShortDomainName = "stein"
$pp.PeoplePickerSettings.SearchActiveDirectoryDomains.Add($domaeneb)
$pp.Update()
$ppmgmt = Get-SPWebApplication https://server3.kollossalfesch.de:1111
$ppmgmt.PeoplePickerSettings.SearchActiveDirectoryDomains
$domaenea = New-Object Microsoft.SharePoint.Administration.SPPeoplePickerSearchActiveDirectoryDomain
$domaenea.DomainName = "kollossalfesch.de"
$domaenea.ShortDomainName = "kollossalfesch"
$ppmgmt.PeoplePickerSettings.SearchActiveDirectoryDomains.Add($domaenea)
$domaeneb = New-Object Microsoft.SharePoint.Administration.SPPeoplePickerSearchActiveDirectoryDomain
$domaeneb.DomainName = "stein.zone"
$domaeneb.ShortDomainName = "stein"
$ppmgmt.PeoplePickerSettings.SearchActiveDirectoryDomains.Add($domaeneb)
$ppmgmt.Update()
Nix darf man hier – Backup Operator für Zugriff auf alles in der Powershell

Nix darf man hier – Backup Operator für Zugriff auf alles in der Powershell

Der Zugriff auf servergespeicherte Profilverzeichnisse kann bisweilen lästig sein.

Meine Überlegung war, dass das als Backup Operator doch funktionieren muss, leider hatte die Idee kaum ein anderer weshalb sich da kaum was googlen lies.

Im Technet gibt es ein großartiges Script hierfür

https://gallery.technet.microsoft.com/Adjusting-Token-Privileges-9b6724fc

Jetzt nur noch in der Powershell laden und alles ist erlaubt:

Set-ExecutionPolicy Unrestricted Process
Import-Module .\Set-LHSTokenPrivilege.ps1
Set-LHSTokenPrivilege SeBackupPrivilege
Set-LHSTokenPrivilege SeRestorePrivilege

Set-LHSTokenPrivilege

Installation von SQL Server mit Always on

Installation von SQL Server mit Always on

Zunächst wird ein einfaches Failovercluster aus zwei Servern benötigt.

Eine ausführlichere Version dazu ist in meinen älteren Beiträgen zu Stretched Cluster

Über den Servermanager werden hierzu die Features Failoverclustering, Speicherreplikat sowie zusätzlich für per iSCSI angebundene Laufwerke Multipfad E/A installiert.

Im Failoverclustermanager wird ein Cluster erstellt, das beide Server enthält.

Via weitere Aktionen muss ein Freigabequorum eingebunden werden.

Die Firewall muss via CMD oder Powershell im Admin-Modus konfiguriert werden.

netsh advfirewall firewall add rule name=“SQL Server” dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name=“SQL Server Always On” dir=in action=allow protocol=TCP localport=5022
netsh advfirewall firewall add rule name=“SQL Admin Connection” dir=in action=allow protocol=TCP localport=1434
netsh advfirewall firewall add rule name=“SQL Service Broker” dir=in action=allow protocol=TCP localport=4022
netsh advfirewall firewall add rule name=“SQL Debugger/RPC” dir=in action=allow protocol=TCP localport=135
netsh advfirewall firewall add rule name=“File & Print Sharing Cluster Admin (replication)” dir=in action=allow protocol=UDP localport=137
netsh advfirewall firewall add rule name=“File & Print Sharing (replication)” dir=in action=allow protocol=UDP localport=138
netsh advfirewall firewall add rule name=“Filestream and NETBIOS Session Service (clustering)” dir=in action=allow protocol=TCP localport=139
netsh advfirewall firewall add rule name=“FileStream, SMB (clustering), and File & Print Sharing” dir=in action=allow protocol=TCP localport=445
netsh advfirewall firewall add rule name=“Analysis Services” dir=in action=allow protocol=TCP localport=2383
netsh advfirewall firewall add rule name=“SQL Browser” dir=in action=allow protocol=TCP localport=2382
netsh advfirewall firewall add rule name=“HTTP” dir=in action=allow protocol=TCP localport=80
netsh advfirewall firewall add rule name=“SSL” dir=in action=allow protocol=TCP localport=443
netsh advfirewall firewall add rule name=“SQL Browser” dir=in action=allow protocol=TCP localport=1434
netsh advfirewall firewall add rule name=“ICMP Allow incoming V4 echo request” protocol=icmpv4:8,any dir=in action=allow

Jetzt wird SQL2017 auf dem ersten Server SQL01 installiert.

Dazu wird eine „neue eigenständige SQL-Server-Installation gestartet.

Im Wesentlichen ist es eine „Weiter, Weiter, Fertig“ Installation, es empfiehlt sich aber, die Datenbank auf ein anders Laufwerk zu speichern.

Die Dienste sollten unter einem Domänenfunktionskonto laufen.

Soll Systemcenter auf dem SQL Server laufen, muss die SQL Sortierung noch umgestellt werden – sonst lässt es sich nicht Installieren und eine nachträgliche Änderung ist lästig.

Ich bevorzuge generell „gemischte Authentifizierung“ falls eine Anwendung, die nicht mit AD Anbindung zurechtkommt installiert werden muss. Es sollten auf jeden Fall trotzdem die Windows User gepflegt werden.

Zusätzlich sollten die Computerkonten über Kreuz Mitglied der Administratorengruppe des anderen Clusterpartners sein.

Die Setupkonfigurationsdatei wird zur Installation des anderen Servers gesichert und editiert: C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\Log\20180817_093350\ConfigurationFile.ini

Mittels der Datei kann nun der zweite(weitere) Server ohne manuellen Eingriff installiert werden.

D:\SETUP.EXE /CONFIGURATIONFILE=”C:\SQLInstall\ConfigurationFile.ini” /IAcceptSQLServerLicenseTerms /SQLSVCPASSWORD="<PASSWORD>" /AGTSVCPASSWORD="<PASSWORD>" /sapwd="<PASSWORD>“

Danach wird das SQL Management Studio heruntergeladen und installiert. https://docs.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017

Das SQL Managementstudio muss als Administrator geöffnet werden.

Nach Verbinden beider Server werden für beide Server Speichergrenzwerte festgelegt. Diese sollten sich am Bedarf der Anwendungen orientieren.

Auf beiden Servern muss das Always On Häkchen im SQL Server Configuration Manager gesetzt werden.

Jetzt können Verfügbarkeitgruppen eingerichtet werden.

Eine Anwendung mit Datenbank wird auf SQL01 installiert bzw. eine bestehende Datenbank wird portiert.

Nach Einfügen der Datenbank muss der Recoverymode auf Full gesetzt werden.

Nun werden Einstellungen an der Datenbank via „New Query“ im SQL Management Studio vorgenommen. Eventuelle Fehler zeigt die Ausgabe

Use SUSDB;
EXEC sp_changedbowner 'sa'
ALTER DATABASE SUSDB SET TRUSTWORTHY ON;
ALTER DATABASE SUSDB SET HONOR_BROKER_PRIORITY ON;
exec sp_configure 'clr enabled', 1;
EXEC sp_configure 'max text repl size', 2147483647 ;
RECONFIGURE
SET NOCOUNT ON
DECLARE @dbname NVARCHAR(128)
SELECT @dbname = sd.name FROM sys.sysdatabases sd WHERE sd.dbid = DB_ID()
IF (@dbname = N'master' OR @dbname = N'model' OR @dbname = N'msdb' OR @dbname = N'tempdb' OR @dbname = N'distribution' ) BEGIN
RAISERROR(N'ERROR: Script is targetting a system database.  It should be targeting the DB you created instead.', 0, 1)
GOTO Branch_Exit;
END ELSE
PRINT N'INFO: Targetted database is ' + @dbname + N'.'
PRINT N'INFO: Running verifications....'
IF NOT EXISTS (SELECT * FROM sys.configurations c WHERE c.name = 'clr enabled' AND c.value_in_use = 1)
PRINT N'ERROR: CLR is not enabled!'
ELSE
PRINT N'PASS: CLR is enabled.'
DECLARE @repltable TABLE (
name nvarchar(max),
minimum int,
maximum int,
config_value int,
run_value int )
INSERT INTO @repltable
EXEC sp_configure 'max text repl size (B)'
IF NOT EXISTS(SELECT * from @repltable where config_value = 2147483647 and run_value = 2147483647 )
PRINT N'ERROR: Max text repl size is not correct!'
ELSE
PRINT N'PASS: Max text repl size is correct.'
IF NOT EXISTS (SELECT db.owner_sid FROM sys.databases db WHERE db.database_id = DB_ID() AND db.owner_sid = 0x01)
PRINT N'ERROR: Database owner is not sa account!'
ELSE
PRINT N'PASS: Database owner is sa account.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_trustworthy_on = 1 )
PRINT N'ERROR: Trustworthy bit is not on!'
ELSE
PRINT N'PASS: Trustworthy bit is on.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_broker_enabled = 1 )
PRINT N'ERROR: Service broker is not enabled!'
ELSE
PRINT N'PASS: Service broker is enabled.'
IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_honor_broker_priority_on = 1 )
PRINT N'ERROR: Service broker priority is not set!'
ELSE
PRINT N'PASS: Service broker priority is set.'
PRINT N'Done!'
Branch_Exit:

Nun muss ein Full-Backup ausgeführt werden, damit die AG erstellt werden kann. Das Default Ziel ist hierfür in Ordnung.

Jetzt kann die Availability Group angelegt werden.

Nun wird ein Listener angelegt, über den der SQL Server mit der Anwendung spricht. Er erhält eine andere IP und einen anderen DNS Namen als der eigentliche Server.

Wenn das Dashboard abschließend wie folgt aussieht, hat alles geklappt.

Für fehlende Konfigurationseinstellungen auf SQL02 muss nun ein Failover direkt vom gerade geöffneten Dashboard ausgeführt werden.

Dann wird wieder via „New Query“ auf dem anderen Server die Konfiguration ausgeführt.

Use SUSDB;
EXEC sp_changedbowner 'sa'
ALTER DATABASE SUSDB SET TRUSTWORTHY ON;
ALTER DATABASE SUSDB SET HONOR_BROKER_PRIORITY ON;
exec sp_configure 'clr enabled', 1;
EXEC sp_configure 'max text repl size', 2147483647 ;
RECONFIGURE

Nun werden dem SQL Dienstkonto via ADSIEDIT auf dem DC SPNs hinzugefügt

Umziehen von Diensten in die AGs

Wie Dienste in AGs umgezogen werden, ist anwendungsspezifisch.

z.B. in WSUS muss ein Registry Key geändert werden.

Um System Center Configuration Manager (SCCM) in eine Availability Group umziehen zu können, muss im SQL Management Studio die AG der Datenbank auf manuellen Failover und „Readable Secondary“ umgestellt werden. Letzteres ist ein Enterprise Feature ohne das sich SCCM weigert, die Datenbank in eine AG zu überführen. SCCM kann somit nur mit SQL Enterprise in einer AG genutzt werden. Nach Migration kann die Datenbank wieder auf automatischen Failover umgestellt werden

Die Datenbank wird im Systemcenter durch Aufruf des Setups aus dem Programmverzeichnis geschwenkt.

C:\Program Files\Microsoft Configuration Manager\bin\X64\Setup.exe

Patchday-Hölle 07-2018

Patchday-Hölle 07-2018

Der Patchday hat mir einen Exchangeserver zerfräst.

Ich habe dann irgendwann herausgefunden, dass sich auch der IIS komisch verhält (hing auf „wird beendet“)

Auch das Deinstallieren der Updates half nicht, der IIS blieb kaputt

Microsoft hat hierfür einen seit heute verfügbaren Reparaturpatch veröffentlicht – installieren, glücklich sein.

https://support.microsoft.com/en-us/help/4345424/improvements-and-fixes-windows-8-1-and-server-2012-r2

Seit Windows 10 1803 stürzt Paperport ab und startet nicht mehr

Seit Windows 10 1803 stürzt Paperport ab und startet nicht mehr

Und auf einmal kam nur noch das Paperport-Startlogo… und dann nix mehr…

Deinstallieren, Dateien und Registryschlüssel manuell bereinigen, dann neu installieren… alles half nicht.

Lösung: Wenn Firefox der Default-Browser ist, wird er direkt bei der Installation in einem Registry Key hinterlegt.

Ersetzt man „Mozilla Firefox“ durch „none“ ist schlagartig wieder alles wölkchen 🙂

 

Dateiserver… hochverfügbar und sicher

Dateiserver… hochverfügbar und sicher

Dateiserver kennen wir… Rechtsklick, Freigabe, fertig…

Das kann auch meine Mama – spannend wird es wenn die Dateien verfügbar bleiben sollen wenn ich meinen Serverraum anzünde… oder Updates installiere und neu starte.

Ich finde hier eine Kombination aus dem klassischen Windows-Failovercluster und Storage Replica echt großartig.

Der Hauptzweck des Failoverclusters ist Hochverfügbarkeit – beide (oder mehr) Server teilen sich ein iSCSI (oder Fiberchannel, FCoE, …) Speicher und stellen diesen über einen gemeinsamen vituellen Servernamen zur Verfügung.

Der Hauptzweck von Storage Replica ist einen passiven Backupspiegel zu haben (ausgenommen Stretched Cluster)

Der Stretched Cluster traue ich noch nicht ganz über den Weg, ich habe gerne die Kontrolle darüber, dass es nur einen aktiven Datenpfad gibt, der von Hand geschwenkt wird. Das Risiko, A und B könnten auseinanderlaufen macht mich doch zu unruhig.

Ist also Hochverfügbarkeit nicht erforderlich und man möchte nur auf einen anderen Standort replizieren, wäre die Server zu Server Replikation der richtige Weg; spielt Hochverfügbarkeit eine Rolle bitte bei Schritt 2 fortfahren und die Mutigen, die es Stretchen wollen… ab zur 3:

 

1. Server zu Server Replikation

 

Nachteil: Failover relativ aufwendig, somit monatliche Probleme beim Patchen

Beide Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.

Es werden 3 Volumes pro Server benötigt:

  • Betriebssystem
  • Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
  • Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher

Zuerst muss via

  • Diskpart
  • List disk
  • Select disk 1
  • Create partition msr size=128
  • Select disk 2
  • Create partition msr size=128
  • Exit

Auf beiden Servern eine MSR Partition angelegt werden, danach kann via „compmgmt.msc“ ganz normal die Partitionierung vorgenommen werden.

Ob ReFS oder NTFS verwendet wird ist abhängig vom Einsatzzweck; beides ist möglich.

Die Rolle Dateiserver und das Feature Speicherreplikat müssen über den Servermanager installiert werden:

Folgende Dienste bzw. Ports müssen in der Firewall freigegeben werden:

  • ICMP
  • SMB- Ports 445 5445
  • Windows Remoteverwaltung Port 5985

Dies kann via CMD mit folgenden Befehlen durchgeführt werden:

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (SMB eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe über SMBDirect (iWARP eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung – ICMPv6 eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name=" Windows-Remoteverwaltung (HTTP eingehend)" new enable=yes profile=domain remoteip=any

 

Jetzt wird die Topologie darauf getestet, ob die Replikation eingerichtet werden kann


Test-SRTopology -SourceComputerName fs01-tf -SourceVolumeName M: -SourceLogVolumeName N: -DestinationComputerName fs02-tf -DestinationVolumeName M: -DestinationLogVolumeName N: -DurationInMinutes 30 -ResultPath c:\temp

 

Alle Test sollten jetzt erfolgreich abgeschlossen werden

Dann kann die tatsächliche Partnerschaft eingerichtet werden – das Laufwerk geht auf dem Zielserver offline:

New-SRPartnership -SourceComputerName fs01-tf -SourceRGName rg01 -SourceVolumeName M: -SourceLogVolumeName N: -DestinationComputerName fs02-tf -DestinationRGName rg02 -DestinationVolumeName M: -DestinationLogVolumeName N:

 

Failover

Der Failover kann nur manuell ausgelöst werden und wird durch Schwenken der Partnerschaftsquelle ausgelöst; daraufhin geht das Laufwerk auf dem Zielserver online. Das DFS Ziel muss ebenfalls manuell angepasst werden

Set-SRPartnership -NewSourceComputerName fs02-tf -SourceRGName rg002 -DestinationComputerName fs01-tf -DestinationRGName rg001

Wenn beide Seiten wieder online sind muss einige Minuten gewartet und auf beiden Seiten nochmals ein Befehl ausgeführt werden.

Set-SRPartnership -NewSourceComputerName fs02-tf -SourceRGName rg002 -DestinationComputerName fs01-tf -DestinationRGName rg001

Mit get-srgroup muss auf beiden Seiten die korrekte Funktion geprüft werden, danach kann zurückgeschwenkt werden.

Set-SRPartnership -NewSourceComputerName fs01-tf -SourceRGName rg001 -DestinationComputerName fs02-tf -DestinationRGName rg002

2. Cluster zu Cluster Replikation

 

Für Testzwecke wurde als iSCSI Host ein Windows Server verwendet. In Wirklichkeit sollte an dieser Stelle das tatsächliche Storage-System stehen.

Hierzu muss die Rolle iSCSI Zielserver installiert werden.

Danach können iSCSI Volumes für die anderen Server im Server-Manager angelegt werden.

Pro Servercluster werden zwei Volumes benötigt. Im Echtbetrieb sollte der iSCSI Host des zweiten Clusters nicht der gleiche sein wie beim ersten Cluster – sonst wäre ja der Sinn der Replikation nicht mehr gegeben – für einen Test spielt es aber keine Rolle wo die Daten liegen.

 

Es werden vier Fileserver benötigt; alle Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.

Es werden 3 Volumes pro Cluster benötigt, die per iSCSI angebunden werden:

  • Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
  • Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher
  • Ein Quorum

Der Einfachheit halber werden alle Fileserver dem Servermanager des ersten Fileservers hinzugefügt.

Auf allen vier Servern müssen die Rolle Dateiserver und die Features Failoverclustering und Speicherreplikat installiert werden.

Wie bei der Einzelserver-Replikation müssen die Firewallports geöffnet werden (funktioniert nur im cmd, nicht in Powershell):

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (SMB eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe über SMBDirect (iWARP eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung – ICMPv6 eingehend)" new enable=yes profile=any remoteip=any

netsh advfirewall firewall set rule name="Windows-Remoteverwaltung (HTTP eingehend)" new enable=yes profile=domain remoteip=any

 

Nun müssen über den „Failovercluster-Manager“ zwei Cluster erstellt werden:

 

Da es beim Clustermanager nicht möglich ist, IPv6 Cluster-IPs zu vergeben, muss dies via Powershell geschehen.

Add-ClusterResource -Name “IPv6 Cluster Address” -ResourceType “IPv6 Address” -Group “Clustergruppe”

Get-ClusterResource "IPv6 Cluster Address" | Set-ClusterParameter -Multiple @{"Network"="Clusternetzwerk 1";"Address"= "2001:638:707:403::159";"PrefixLength"=64}

Stop-ClusterResource “Clustername”

Set-ClusterResourceDependency “Clustername” “[Ipv6 Cluster Address]”

Start-ClusterResource “Clustername”

 

Nun müssen die Laufwerke in der Datenträgerverwaltung online geschaltet und GPT initialisiert werden. Das zukünftige Clusterquorum muss mit einer NTFS formatierten Partition versehen werden.

Die anderen Festplatten können auch mit ReFS verwendet werden.

 

Danach können sie im Failovercluster eingefügt werden.

Jetzt kann das Quorum auf beiden Clustern konfiguriert werden.

 

Nur wird die Dateiserverrolle hinzugefügt:

 

Das Datenvolume muss „zu den freigegebenen Clustervolumes“ hinzugefügt werden, das Protokollvolume muss „verfügbarer Speicher“ bleiben.

 

Jetzt kann eine Freigabe angelegt werden.

 

 

Nun kann die Cluster zu Cluster Replikation konfiguriert werden.

Die Clusterserver müssen vorab auf die jeweils anderen Cluster berechtigt werden.

Grant-SRAccess -ComputerName FS01-tf -Cluster fscluster02-tf

Grant-SRAccess -ComputerName FS02-tf -Cluster fscluster02-tf

Grant-SRAccess -ComputerName FS03-tf -Cluster fscluster-tf

Grant-SRAccess -ComputerName FS04-tf -Cluster fscluster-tf

Grant-SRAccess -ComputerName fscluster-tf -Cluster fscluster-tf02

Grant-SRAccess -ComputerName fscluster-tf02 -Cluster fscluster-tf

Grant-ClusterAccess –user FS01-tf$ –Full –Cluster fscluster02-tf

Grant-ClusterAccess –user FS02-tf$ –Full –Cluster fscluster02-tf

Grant-ClusterAccess –user FS03-tf$ –Full –Cluster fscluster-tf

Grant-ClusterAccess –user FS04-tf$ –Full –Cluster fscluster-tf

Grant-ClusterAccess –user FScluster-tf$ –Full –Cluster fscluster02-tf

Grant-ClusterAccess –user FScluster02-tf$ –Full –Cluster fscluster-tf

 

Folgender Befehl aktiviert die Replikation

New-SRPartnership -SourceComputerName fscluster-tf -SourceRGName rg01 -SourceVolumeName C:\ClusterStorage\Volume1 -SourceLogVolumeName n: -DestinationComputerName fscluster02-tf -DestinationRGName rg02 -DestinationVolumeName c:\ClusterStorage\Volume1 -DestinationLogVolumeName n:

 

Failover

Der Failover kann nur manuell ausgelöst werden und wird durch Schwenken der Partnerschaftsquelle ausgelöst; daraufhin geht das Laufwerk auf dem Zielserver online. Das DFS Ziel muss ebenfalls manuell angepasst werden

Set-SRPartnership -NewSourceComputerName fscluster02-tf -SourceRGName rg02 -DestinationComputerName fscluster-tf -DestinationRGName rg01

 

Wenn beide Seiten wieder online sind muss einige Minuten gewartet und auf beiden Seiten nochmals ein Befehl ausgeführt werden.

Set-SRPartnership -NewSourceComputerName fscluster02-tf -SourceRGName rg02 -DestinationComputerName fscluster-tf -DestinationRGName rg01

 

Mit get-srgroup muss auf beiden Seiten die korrekte Funktion geprüft werden, danach kann zurückgeschwenkt werden.

Set-SRPartnership -NewSourceComputerName fscluster-tf -SourceRGName rg01 -DestinationComputerName fscluster02-tf -DestinationRGName rg02

 

3. Stretched Cluster

 

Beim Stretched Cluster wird nur ein Cluster geblildet, das die Server 1-4 enthält.

Es werden vier Fileserver benötigt; alle Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.

Es werden 2 Volumes pro Clusterseite benötigt, die per iSCSI angebunden werden:

  • Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
  • Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher

Den Servern FS01 und FS02 steht ein gemeinsamer Speicher zur Verfügung während den Servern FS03 und FS04 ein anderer gemeinsamer Speicher zur Verfügung steht.

 

Zunächst müssen den Servern per Powershell Standorte zugewiesen werden

New-ClusterFaultDomain -Name Seminar -Type Site -Description "Primary" -Location "Seminargebaeude" 

New-ClusterFaultDomain -Name Haus18 -Type Site -Description "Secondary" -Location "Haus18" 

Set-ClusterFaultDomain -Name fs01-tf -Parent Seminar 

Set-ClusterFaultDomain -Name fs02-tf -Parent Seminar 

Set-ClusterFaultDomain -Name fs03-tf -Parent Haus18 

Set-ClusterFaultDomain -Name fs04-tf -Parent Haus18 

(Get-Cluster).PreferredSite="Seminar"

 

Dann werden die verschiedenen Speicher angebunden.

Dass hier einige Offline erscheinen, weil der Besitzer sie nicht erreichen kann, ist in Ordnung; das in diesem Bespiel vorhandene Quorum wird nicht benötigt, da die Verwendung eines Freigabequorums empfohlen wird; dieses sollte auf einem dritten Speicher liegen.

Das Datenvolume muss zu den freigegebenen Clustervolumes hinzugefügt werden, danach kann die Replikation aktiviert werden.

Es werden automatisch die richtigen Laufwerke vorgeschlagen und müssen nur noch angehakt und bestätigt werden.

 

Wenn schon ein Backup der Quelldateien auf dem Ziel vorhanden ist, kann Seeding ausgewählt werden, was die Replikationszeit verkürzt.

Die Synchronisation sollte synchron erfolgen.

Schreibreihenfolge aktivieren verringert die Wahrscheinlichkeit inkonsistenter Daten, für einfache Dateifreigaben sollte die Konfiguration „Höchste Leistung“ keine Probleme bereiten.

 

Nach langwieriger Synchronisation können dann auf dem Cluster eine Dateiserverrolle und Freigaben erstellt werden.

Nur wird die Dateiserverrolle hinzugefügt:

Wenn beim Erzeugen von Freigaben ein Fehler auftritt hilft zumeist abwarten und später nochmal versuchen

Die Freigabe sollte über den Clusterassistenten erstellt werden.

Failover

Der Failover geschieht allein durch Abwesenheit von Servern einer Seite.

Fällt die Zielseite weg gibt es nichts zu beachten; die Quelle läuft weiter.

Fällt die Quellseite weg bzw. soll die Quellseite abgeschaltet werden, ist es erforderlich, dass zunächst die Replikation fehlerfrei abgeschlossen wird.

Ist die Replikation nicht im Status „kontinuierliche Synchronisation“ übernimmt das Ziel nicht die Clustervolumes wenn die Quelle wegbricht.

Fröhliches Clustern 🙂

Windows Hello verwenden

Windows Hello verwenden

In der Domäne ist die Verwendung von Windows Hello d.h. Authentifizierung am Gerät via Fingerabdruck oder Gesichtserkennung in der Standardkonfiguration verboten.

Um dies zu aktivieren müssen einige Computerrichtlinien gesetzt werden.

Zusätzlich muss die „Komfortable PIN-Anmeldung“ aktiviert werden, da dies als Fallback erforderlich ist. Es empfiehlt sich, die PIN Sicherheit zu erhöhen, da per Standard nur vier Ziffern erforderlich sind.

Damit diese Richtlinie nur auf Windows 10 Notebooks angewendet wird, sollte ein WMI Filter verwendet werden, der prüft, ob das richtige Betriebssystem vorliegt und ob eine Batterie vorhanden ist.

 

Jetzt kann via Einstellungen, Konten, Anmeldeoptionen die PIN-Authentifizierung aktiviert werden.

Ist die Kamera- oder Finderabdruckerkennung nicht auswählbar so ist die verwendete Hardware nicht kompatibel.

Migration Sharepoint 2013 nach Sharepoint 2016 unter Wechsel der Domäne

Migration Sharepoint 2013 nach Sharepoint 2016 unter Wechsel der Domäne

Dies ist eine Kurzkurzanleitung zu einer Sharepointmigration.

Sie geht kaum auf Besonderheiten ein, noch erhebt sie Anspruch auf Vollständigkeit.

Ich habe dies aufgeschrieben, da ich bei google keine einfache Kurzanleitung gefunden habe.

Es wird vorausgesetzt, dass er Anwender weiß, wie ein SQL Server installiert und verwaltet wird und wie man Windows 2016 installiert und patcht – ebenso wie eine Domäne funktioniert.

Die alte Sharepoint Installation in der Quelldomäne basiert auf Sharepoint 2013, in der neuen Domäne wird 2016 verwendet.

Es werden mindestens drei Server benötigt. Der Office Online Server und der/die Sharepointserver benötigen Webserver Zertifikate.

  • Sharepoint Farmserver im Einzelserverbetrieb, alternativ mehrere Web- und Applikationsserver
  • Office Online Server
  • SQL Server

Für alle Server wird ein vollständig gepatchtes Windows 2016 vorausgesetzt.

Zuerst müssen in der Zieldomäne die Nutzerkonten für die Sharepoint-Farm vorhanden sein:

  • „Sqls“ als SQL-Sysadmin
  • „Adm_SPFarm“ als Hauptadministrator der Sharepoint Umgebung
  • „Svcsp“ als Dienstbenutzerkonto der Sharepointumgebung

Nach Installation des SQL Servers müssen benötigte SQL-Rechte den o.g. Nutzern zugewiesen werden.

Auf dem zukünftigen Sharepoint Server muss zunächst im Servermanager die „Verstärkte Sicherheit im IE“ deaktiviert werden, da sonst die Installation der „Installationsvoraussetzung fehl schlägt“

Vom gemounteten DVD Image müssen nun zunächst die Installationsvoraussetzungen und nach Neustart der Server selbst installiert werden.

Im Wesentlich ist dies eine „Weiter, Weiter, Fertig“ Installation, bei der eine Erstkonfiguration durchgeführt werden muss; bei dieser werden DB Server, Port für Admin-Seite und Dienstbenutzer benötigt.

In der nun verfügbaren Sharepoint Zentraladministration kann eine Erstkonfiguration ohne Anlegen einer Webseite durchgeführt werden.

Eventuell unter Zentraladministration, Anwendungsverwaltung dennoch vorhandene Webseiten können bis auf Sharepoint Central Administration v4 gelöscht werden.

Nun muss nach Aktivieren von „Updates für andere Microsoftprodukte“ nochmals nach Updates gesucht werden. Die zusätzlich gefundenen Updates müssen installiert werden.

Der Patchvorgang wird danach durch einen Powershellbefehl abgeschlossen.

PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures -cmd secureresources -cmd services –install

Von der alten Umgebung wird nun eine Sicherung der Inhaltsdatenbank gefertigt.

Diese wird danach in den Sharepoint Server importiert.

stsadm -url https://spweb01-tf.kollossalfesch.de -o addcontentdb -databaseserver spdb01-tf -databasename WSS_Content_Intranet80

Sollte es nun keine öffentlichen Zertifikate geben, können über die IIS Verwaltung selbstsignierte Zertifikate erstellt werden. Diese müssen dann allen Servern gegenseitig bekannt sein (z.B. Verteilung über Gruppenrichtlinie), da sonst die Kommunikation zwischen Office Online und Sharepoint nicht funktioniert.

Obwohl die Webseite nun im neuen Sharepoint Server vorhanden ist, müssen noch einige Einstellungen angepasst werden.

In der Zentraladministration unter Anwendungsverwaltung, Dienstanwendung verwalten, Suchanwendung müssen die „Inhaltsquellen“ konfiguriert werden, damit weiterhin eine Indizierung erfolgt.

Die Kontinuierliche Durchforstung muss aktiviert werden und ein sinnvoller Zeitplan ist festzulegen; Evtl. kommt „alle 15 Minuten inkrementell und einmal wöchentlich außerhalb der üblichen Nutzungszeiten vollständig“ in Frage.

Wenn Sharepoint Designer benötigt wird, so kann dieser in der Version 2013 installiert und weiterhin verwendet werden, eine Version 2016 existiert nicht.

Nun fehlt noch die Installation des Office Online Servers

Notwendige Features werden über einen Powershell Befehl installiert:

Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45

Office Online Server zum Herunterladen findet man im VLSC unter Office Professional Plus 2016 wenn man Herunterladen, Webbrowser, German und 64bit wählt

Die Installation des Office Online Servers erfordert keine Einstellungen.

Wenn ein selbstsigniertes Zertifikat verwendet wurde, muss das zu verwendende Zertifikat in „Eigene Zertifikate“, „Webserverzertifikate“ und „vertauenswürdige Stammzertifizierungsstellen“ liegen, damit es keinen Fehler bei der nachfolgenden Konfiguration gibt, dass das Zertifikat nicht gefunden wurde.

New-OfficeWebAppsFarm -InternalUrl "https://spapp01-tf.kollossalfesch.de" -ExternalUrl "https://spapp01-tf.kollossalfesch.de" –EditingEnabled:$TRUE -CertificateName "spapp01-tf.kollossalfesch.de-Webcert"

Dabei muss „Editing Enabled“ bestätigt werden.

Jetzt muss festgelegt werden, welche Domänen die Office Online Dienste nutzen können.

New-OfficeWebAppsHost -Domain kollossalfesch.de

Nach Ausführung folgenden Befehls auf dem Sharepoint Server sind die Office Online Dienste aktiv:

New-SPWOPIBinding -ServerName “spapp01-tf.kollossalfesch.de”

Die zur Bearbeitung der Sharepoint Seite berechtigten Konten befinden sich u.U. in der alten Domäne, daher sollte noch ein Konto mit Vollzugriff versehen werden.

Wahrscheinlich müssen noch Quicklinks angepasst werden.

Dies funktioniert nach Seitenaufruf via Websiteinhalte, Quicklinks

 

Wenn Sharepoint mich hasst.

Wenn Sharepoint mich hasst.

Wie es immer so ist: Niemand weiß wie es dazu kam aber der User zur Datenbankverwaltung war im Testsystem nicht mehr bekannt.

Wenn man also nicht mehr seine Datenbank administrieren kann, gibt es eigentlich nur eine Lösung:

Einbrechen.

Was böse klingt, ist einfach wenn man lokale Admin-Rechte hat.

Einfach den SQL Server beenden und flugs im Single-User-Modus starten:

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\binn\sqlservr.exe –m

Jetzt in zweiter Instanz geschwind mit dem SQLer verbingen:

Sqlcmd –s server\mssqlserver

Mich zum Admin erklären:

Sp_addsrvrolemember ‚MEINEDOMÄNE\MEINUSER‘,‘sysadmin‘

Go

Und nun den Dienst normal starten

Tadaaaaaaa, SQL Management Studio, ich kann mich verbinden und darf alles.

Schlecht ist… der Sharepoint will nicht mehr

Im Eventlog „SharePoint Foundation“ 5586:

Unbekannte SQL-Ausnahme '0'. Weitere Fehlerinformationen aus SQL Server finden Sie unten.

Der Prinzipalname des Ziels ist nicht korrekt. Der SSPI-Kontext kann nicht generiert werden.

Die Lösung ist spannend:

Der User, unter dem ich das Kennwort zurück gesetzt habe, bekommt einen Eintrag im Active Directory

Diesen kann man auf dem DC ermitteln

Ldifde -d "DC=Contoso,DC=Com" -l ServicePrincipalName -F C:\SPN.txt

In der Textdatei kann nun nach „MSSQLSVC\SERVERNAME“ gesucht werden

Aus dem Userobjekt, in dem dieser Eintrag gefunden wird (der, der das SQL Passwort zurückgesetzt hat), muss dieser „serviceprincipalname“ via ADSIEDIT.MSC entfernt werden.

SQL Server neu starten, Sharepoint Server neu starten, dann sollte Sharepoint wieder mitspielen.