Volumenschattenkopie (VSS) Wiederherstellung „Quellpfad ist zu lang“

Problem

Wärend einer Restore-Datenrettung mit VSS (Volumenschattenkopien) über die praktische Funktion „Vorgängerversion wiederherstellen“ tritt der Fehler „Quellpfad ist zu lang“ auf:

Die Quelldateinamen sind zu lang für das Dateisystem. Verschieben Sie
sie an einen anderen Ort, der einen kürzeren Pfadnamen hat, oder benennen
Sie sie in kürzere Namn um, bevor Sie den Vorgang fortsetzen.

 

Lösung

Das stimmt, solche Pfade geraten bei tiefen Filestrukturen recht schnell an das gute alte „MAX_PATH“ limit von gigantischen 260 Zeichen. „Char260 ought to be enough for anybody“ 🙂

  1. Im „normalen“ Explorer mit der rechten MT auf den betroffenen Ordner (oder die Datei) > „Vorgängerversion wiederherstellen“
  2. Nun die passende Version auswählen um die es geht > „Öffnen“
  3. In dem neuen Fenster den übergeordneten Ordner mit der rechten MT anklicken > „Eigenschaften“
  4. Auf dem Tab „Allgemein“ gibt es das Feld „Ort“. Da steht etwas drin, das aussieht wie „\\localhost\T$\@GMT-2017.01.01-01.00.22\Die ist ein verdammt langer Ordnernamen“. Diesen Pfad komplett kopieren (STRG+C).
  5. An der Kommandozeile (CMD) läst sich dieser Pfad nun via Subst deutlich verkürzt als Laufwerk verbinden:
    C:\> subst x: "\\localhost\D$\@GMT-2017.01.001-01.0.22\Dies ist der laengste Ordnername der Welt"
    1. Subst funktioniert nur auf einem lokalen NTFS-Host
    2. Bei Remote-Servern einfach subst durch ’net use‘ ersetzen
      net use x: "\\\\@GMT-2017.01.001-01.0.22\Dies ist der laengste Ordnername der Welt"
  6. Jetzt kann man mit seinem Lieblingswerkzeug die Daten von dem neuen Laufwerk kopieren. Auch an den alten Ort, kein Problem.

Achtung

  1. Nachdem das fertig ist, muss das Substituierte Laufwerk auch wieder weg. Das geht mit dem Subst-Parameter /d:
    C:\> subst x: /d
  2. Man braucht den Platz für die Dateien zweimal (!). Einmal im Dateisystem und einmal verbleiben diese im VSS.

Windows Server 2012R2 mit ABE hat hohe CPU-Last (Gestbeitrag von Andreas)

Problem

Ein Windows Server 2012R2 installierter Fileserver-Rolle und aktiviertem ABE (Access Based Enumeration) hat sehr viele PDF-Dateien bekommen. Daraufhin gibt es massive Performance-Probleme.

Die CPU am Fileserver zeigt während des Arbeitszeit ~100% Last an, Netzwerklast gibt es dabei aber kaum. Mit Procmon sieht man unzählige Zugriffe auf diese PDF Dateien. Auf die Dateien und Ordner kann von Windows 7 Clients aus zugegriffen werden.

Lösung

Die ABE-Funktion muss bei einer großen Anzahl Ordnern und Dateien eingeschränkt werden, weil die Anfrageschlange sonst zu groß wird.

Den ABELevel kann man in der Registry setzen. Das geht hier:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

Dort einen DWORD-Wert (32 bit) Eintrag mit der Bezeichnung ABELevel und einem entsprechendem Wert anlegen.

Der ABELevel -Wert gibt die höchste Ebene der Ordner auf denen die ABE-Funktion aktiviert ist. Zum Beispiel wenn ABE auf \\SERVER\FREIGABE aktibiert ist, muss der ABELevel-Wert auf „1“ stehen. Wenn ABE auf \\SERVER\FREIGABE\ORDNER aktiviert ist, muss der ABELevel Wert auf „2“ stehen. Wenn der Wert ABELevel nicht festgelegt ist oder der Wert 0 hat, ist dieser Hotfix noch nicht installiert.

Wert = 1: ABE aktiviert für Tiefe von 1 (\server\share)
Wert = 2: ABE aktiviert für Tiefe von 2 (\server\share\folder)

Microsoft-KB: https://support.microsoft.com/de-de/kb/2732618 (High CPU usage on a file server that is running Windows Vista, Windows 7, Windows Server 2008 or Windows Server 2008 R2 with ABE enabled)

Ein ganz großes Dankeschön an Andreas 🙂

 

IIS Reverse SSL Proxy unter Windows Server 2012R2/2016 einrichten (Schritt für Schritt)

Ab und zu muss ein Wbservice auf einem „dritten“ Web- oder Applikationsserver wie Tomcat, Jetty ein Hardware-IoT-Gerät (Heizungssteuerung, Alarmsystem …) oder ähnliches sicher an das Internet angebunden werden. Was bietet sich mehr an, als ein reverser Proxy in einem „Standart-System“, das die SSL/TLS-Verbindung eines Clients verwaltet und nur die nackten HTTP-Anfragen unverschlüssel weiterleitet? Eine einfache Anleitung für einen SSL-Offloading-reverse-Proxy.

Installation IIS als reverse Proxy mit SSL-Offloading

Installieren

Reverse-Proxy im IIS einschalten

IIS-Konsole („Internetinformationsdienste (IIS) Manager“) > Links auf den Server > Rechts auf „Application Request Routing Cache“ > Ganz recht auf die Action „Server Proxy Settings…“ > „Enable Proxy“ einschalten. Sonst hier nichts ausfüllen, vor allem das Feld für die Proxy-Chain leer lassen.

Falls noch nicht geschehen: SSL-Zertifikat in IIS importieren

Wir importieren hier ein Zertifikat einschliesslich private Key, zum Beispiel aus einem Wildcard-Zertifikat. Je nach Ausgangsstellung muss das passende Zertifikat zur Verfügung stehen (self-signed oder unterschriebener CSR und so weiter).

Doppelklick auf das PFX > Speicherort „Lokaler Computer“ > Weiter … (dem Assistenten folgen) …Fertigstellen.

SSL-Listener im IIS erstellen

IIS Manager > Links den Server auswählen > Rechts die Action „Bindungen“ > Hinzufügen > Den Typ auf „SSL“ stellen und den rest des Fesnters entsprechend ausfüllen. Sollte hier kein SSL-Zertifikat zur Auswahl stehen, ist das Zertifikat nicht korrekt importieren (oder es steht kein privater Schlüssel zur Verfügung). Dann den vorherigen Schritt noch einmal genau anschauen. Sollte der lokale Port :80 belegt sein, diesen auf einen anderen freien Port umstellen.

Weiterleitungsziel (Server „Farm“) erstellen und Rewrite-Regel erstellen

Im IIS-Manager links unten auf den neuen Knoten „Server Farms“ > Create Server Farm

Server-Farm Name: beliebig > Das Feld „Server Address“ ist der Ziel-Webserver (in diesem Bespiel ist der Ziel-Webserver auf dem lokalen Host 127.0.0.1, das kann aber auch ein BELIEBIGER-HOST.DOMAIN.INTERN sein) > Die folgende „Rewrite Rules“ Frage mit „Ja“ beanworten („IIS Manager can create a URL rewrite rule to route all incoming requests to this server farm automatically. Do you want to create this rule now? You can also create this rule later by visiting the Routing Rules page of the server farm.“)

  • Unter „Advanced Settings“ müssen HTTP/HTTPS-port belegt sein. Wenn der Webserver nur auf HTTP reagiert, einfach undedizierten Müll eintragen.
  • Der Port lässt sich im nachhinein an dieser Stelle nicht mehr ändern. Ändert sich der Ziel-Port, einfach den Server löschen und einen neuen Eintrag hinzufügen. Alternativ kann man über den „Configuration Editor“ > Web Farms den eintrag erreichen. Microsoft hat sich hier das logische GUI einfach gespart.

Damit ider der IIS Reverse Proxy auch schon fertig.

Outlook 2013/2016 „Ein unbekannter Fehler ist aufgetreten, Error-Code 0x80090345“

Unter Windows 8.1 oder höher mag sich ein nagelneu eingerichtetes Outlook nicht mit dem Exchange-Server verbinden. Das passiert gleichermaßen bei lokalen Exchange-Servern und auch unter Office 365. Statt sich zu verbinden erscheint nach dem Autodiscover, also nach dem „Exchange-Servereinstellungen suchen“.

Lösung

Dieser Fehler tritt nur auf, wenn die Domäne unter Windows NT4 oder Samba betrieben wird. Die Lösung lautet, auf den neuen Credential-Manager-Schutz aus KB3000850 zu verzichten:

Einfach dazu im Schlüssel HKLM\SOFTWARE\Microsoft\Cryptography\Protect\Providers\df9d8cd0-1501-11d1-8c7a-00c04fc297eb den DWORD-Wert „ProtectionPolicy“ auf 1 setzen.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Protect\Providers\df9d8cd0-1501-11d1-8c7a-00c04fc297eb]
"ProtectionPolicy"=dword:00000001

Die Samba-Leute sind mit ihren Credentials noch nicht so weit (siehe Wiki).

Windows Batch: Uhrzeit und Datum verwenden (UPDATE: mit führender „0“ bei einstelligen Stunden)

Ich benötige im Alltag ab und an das aktuelle Datum und die Uhrzeit „zerlegt“ in einzelne Variablen, um zum Beispiel Dateien nach Zeit oder Datum abzuspeichern oder Logeinträge korrekt formatiert auszugeben. Das ist seit Windows XP zum Glück recht einfach, aber weil ich faul bin lege ich hier meine zu diesem Zweck erzeugten Substring-Scriptschnipsel ab – dann muss ich die paar Zeilen nicht immer neu tippen (und korrigieren).

Es gibt da auch ein Problem mit den führenden Nullen: Windows setzt die Zeitvariable %time% nicht mit führenden Nullen, sondern in „Menschlich lesbar“.

Beispiel:

C:\>echo %time%        Ergibt ab 10Uhr: 11:02:18,04

C:\>echo %time%        Ergibt ab 24Uhr: _9:02:18,04 Hier ist ein Leerzeichen eingefügt, denn das Padding des Strings ist immer gleich breit.

Lösung

set YYYY=%date:~-4%
set MM=%date:~-7,2%
set DD=%date:~-10,2%
set hr=%time:~0,2%
if "%hr:~0,1%" == " " SET hr=0%hr:~1,1%
set min=%time:~3,2%
set sek=%time:~6,2%

Mit diesen Variablen würde eine Ausgabezeile zum Beispiel so aussehen:

echo Es ist heute der %DD%.%MM%.%YYYY% und wir haben die wundervolle Uhrzeit %hr%:%min%:%sek%

Mit führenden Nullen sieht das Ergebnis dann, korrekterweise, so aus:

Es ist heute der 24.12.2016 und wir haben die wundervolle Uhrzeit 01:04:37

Nicht das diese Zeile viel Sinn hätte, in der Praxis benötige ich beispielsweise eher so etwas:

zip –m -9 idslogs-%YYY%%MM%%DD%%.zip %1*.log

… das mir Dateien mit einem sinnvollen Namen (z.B. idslogs-20121203.zip) erstellt.

Wichtig zu wissen: Diese Zeilen legen die wichtigen Werte direkt in eigenen Variablen ab; die Zuordnung ist im Moment der Zuordnung statisch, was bedeutet das ein Wert sobald zugewiesen immer so bleibt und sich nicht mit fortschreitender Zeit ändert. Wenn die Werte aktualisiert werden sollen (beispielsweise zu beginn/ende eines Script) muss dieser Block wieder aufgerufen werden, etwa mit einer call: Anweisung dorthin.

certutil 0x80090005 (-2146893819 NTE_BAD_DATA)

Wenn man unter Windows mit dem MMC Zertifikats-SnapIn einen frischen CSR erstellt („REQ“ im Windows-Jargon), wird standartmäßig der aktuelle „Microsoft Strong Crytographic Provider“ als Kryptoanbieter ausgewählt. Das ist im Prinzip auch gut so, denn das ist der aktuellste und vom Umfang her größte CSP (Certificate Storage Provider) den Windows mitbringt. Die meisten Windows-Features können damit auch problemlos umgehen – der IIS, der SMTP, RDS und so weiter.

Nicht jedoch Exchange (bis einschliesslich 2016 CU3). Exchange FBA unterstütz keine CNG Zertifikate. Nutzt man diese doch, kommt es zu dem berüchtigten Exchange OWA und Exchange EAC Anmeldeloop.

Folgt man dem im Blog angegebenen Anweisungen zum austausch der Zertifikates und erstellt ein neues passendes Zertifikat, kommt es beim Import der neuen Zertifikate (ob CER oder PFX spielt keine Rolle) oftmal zu dem Fehler

certutil 0x80090005 (-2146893819 NTE_BAD_DATA)

Ursache hierfür ist, das der im CSR angegebene CSP nicht korrekt ist. Wenn man den CSR unter Windows erstellt, versteckt sich das zugehörige Häkchen unter Neue Anforderung erstellen > Eigenschaften > Privater Schlüssel > Kryptografiedienstanbieter. Der für den CSR ausgewählte CSP lässt sich mit certutil an der Kommandozeile selbstverständlich nicht nachschauen …

Windows PKI Fehler „Der angeforderte Antragstellername ist ungültig oder zu lang (0x80094001)“

Problem

Beim ausstellen eines neuen Zertifikates mit einem frisch generierten CSR reagiert die Windows Zertifizierungsstelle (CA) in dem Webinterface mit diesem Fehler:

Der angeforderte Antragstellername ist ungültig oder zu lang (0x80094001)

Das gleiche tut Sie auch auf einem englischen Windows, mit einem englischen Fehler:

Error parsing request the subject name is invalid or too long 0x80094001 (CSR)

Lösung

Wenn die CA unter Windows Server 2008 oder früher erstellt wurde, hat diese warscheinlich das gute alte 64-Zeichen Limit für Domains geerbt. Man kann diese (heute) sinnlose limitierung ganz schnell abschalten:

c:\> certutil -setreg ca\EnforceX500NameLengths 0

Die Einstellung ist ebenfalls notwendig, wenn man Wildcard-Zertifikate mit einer Windows CA unterschreiben möchte.