Server hängt beim herunterfahren

Nach der Installation einer großen Anzahl von Updates wollten einige Server nicht mehr sauber herunter fahren, bzw. neu starten.

Gut 20min musste ich mir den folgenden Bildschirm anschauen.

image

Dabei habe ich mir die Frage gestellt – was tun? Gut, eine VM kann ich über das Hyper-V Management einfach ausschalten, einen Hyper-V Host oder anderen physikalischen Server kann ich über das ILO-Board ausschalten. Die Konsequenzen sind aber nicht immer absehbar.

Die Ursache des Problems war bei allen Systemen (3x virtuell und 1x Hyper-V Host), dass sich ein Services nicht korrekt beenden wollte.

Eine Abfrage der Services …

sc \\server queryex >c:\temp\process.txt

… welche remote noch möglich war lieferte folgendes Ergebnis.

SERVICE_NAME: TrkWks
DISPLAY_NAME: Distributed Link Tracking Client
        TYPE               : 20  WIN32_SHARE_PROCESS  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 12
        FLAGS              : 

SERVICE_NAME: TrustedInstaller
DISPLAY_NAME: Windows Modules Installer
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 3  STOP_PENDING 
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x2
        WAIT_HINT          : 0x36ee80
        PID                : 4124
        FLAGS              : 

SERVICE_NAME: UmRdpService
DISPLAY_NAME: Remote Desktop Services UserMode Port Redirector
        TYPE               : 20  WIN32_SHARE_PROCESS  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0

Da die Ausgabe in eine Textdatei erfolgte konnte ich hier einfach eine Suche durchführen und bin dabei mehrfach auf den TrustedInstaller Service gestoßen welcher mit STOP_PENDING das Herunterfahren, bzw. den Neustart des Servers verhinderte.

Ein Beenden des Prozesses mit taskkill half sofort und das Problem war gelöst.

taskkill /S server /PID 4124

Nach dem Neustart wurden nochmals wenige ausstehende Updates installiert und der Server läuft wieder ohne Probleme.

Auf einem Hyper-V Host hatte ich das gleiche Problem, hier wollte eine VM sich nicht beenden und nach über 1h Warten habe ich mich entschlossen den Prozess der VM zu beenden.

SERVICE_NAME: vds
DISPLAY_NAME: Virtual Disk
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 1076
        FLAGS              : 

SERVICE_NAME: vmms
DISPLAY_NAME: Hyper-V Virtual Machine Management
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 3  STOP_PENDING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0xdcb
        WAIT_HINT          : 0x7d0
        PID                : 1112
        FLAGS              : 

SERVICE_NAME: W32Time
DISPLAY_NAME: Windows Time
        TYPE               : 20  WIN32_SHARE_PROCESS  
        STATE              : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 844
        FLAGS              : 

Das Beenden erfolgt wiederum über taskkill.exe und der entsprechenden Prozess-ID (1112).

Nach dem Neustart des Hyper-V Hosts hat lediglich die VM einen “unexpected shutdown” gemeldet, alle anderen VMs waren davon nicht betroffen.

Generell erscheint mir diese Vorgehensweise (auch bei Hyper-V Hosts) die deutlich sinnvollere als einfach den Server aus zu schalten. Ein Power-Reset betrifft gleich immer alle darauf laufenden Systeme was auch mal einige VMs beschädigen kann.

Enjoy it, b!

Password will never expire …

In Workgroups oder Zuhause ist es oft mühselig (bei den Home Editions über die GUI gar nicht möglich) das Ablaufen von Passwörtern zu deaktivieren. Neulich hatte ich das Problem, dass 20 Notebooks in einem Schulungscenter mit drei lokalen Benutzern mit ablaufenden Passwörter zu kämpfen hatten. Daher habe ich ein Script geschrieben um die Konfiguration zu automatisieren.

Eigentlich reicht es einfach das Script mit erhöhten Admin-Rechten aus zu führen. ich habe aber noch eine Möglichkeit eingebaut Accounts von dieser Änderung aus zu schließen. Diese müssen dazu lediglich in Zeile 7 eingetragen werden.

set account-filter=administrator gast guest Default

Das Script funktioniert mit Windows 7 aufwärts (darunter habe ich es nicht getestet) und ist als einfache Batch realisiert.

@echo off

:: Set-PasswordWillNeverExpire.cmd

set alog-unicode=%temp%\local-accounts-unicode.txt
set alog-ansi=%temp%\local-accounts-ansi.txt
set account-filter=gast guest Default
set alog-ansi-2beSet=%temp%\local-accounts-2beSet.txt

echo.
echo !!! Run this script as Administrator !!!
echo.

:: get local user accounts from wmi as unicode
WMIC USERACCOUNT WHERE LocalAccount='true' GET Name >%alog-unicode%
:: convert unicode to ansi
type %alog-unicode% >%alog-ansi%

:: excluding some accounts
for /f "tokens=1,* skip=1 delims= " %%a in (%alog-ansi%) do (
 
	echo %%a | findstr /v /i "%account-filter%" >>%alog-ansi-2beSet%

)

:: setting remaining accounts to never expire
for /f "tokens=1" %%a in (%alog-ansi-2beSet%) do (

	WMIC USERACCOUNT WHERE "Name='%%a'" SET PasswordExpires=FALSE

)

del %alog-unicode%
del %alog-ansi%
del %alog-ansi-2beSet%

Hier noch ein paar Hinweise zum Script:

Das Auslesen der Benutzer über das WMI erzeugt erst einmal eine Datei im Unicode Format. Mit dieser kann FOR aber nichts anfangen, wir müssen diese also nach ANSI konvertieren. Das geschieht mit einem einfachen TYPE .

type UNICODE-DATEI > ANSI-DATEI

Am Ende des Scripts werden alle erstellten Dateien wieder gelöscht, wer diese zur Dokumentation behalten will kann einfach die letzten drei Zeilen mit einem :: oder REM versehen und findet diese dann unter %TEMP%\NAME-DER-LOGDATEI.EXT.

:: del %alog-unicode%
:: del %alog-ansi%
:: del %alog-ansi-2beSet%

Enjoy it, b!

Lange Pfade in Windows

Schon vor ein paar Jahren hatte ich einen Post welcher sich mit langen Pfaden und deren Löschung über Robocopy beschäftigt hatte. Lange Pfade stellen einen Admin aber nicht nur beim Löschen sonder auch z.B. bei der Änderung von ACLs vor Probleme. Hier hilft dann der Umweg über die Windows API, z.B. mit icacls.

icacls "\\?\H:\Shares\verzeichnis1\00_B....t" /grant users:(m) /t /c /q /inheritance:e

Hier noch ein wenig Hintergrund zu der Problematik.

Windows hat immer noch eine Begrenzung von maximal 260 Zeichen im Pfad:

D:\some 256-character path string<NUL>

“D:\” = 3-character; 256-character; NUL = 1-character ergibt 260-character string

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

Die Verwendnug der Windows API hingegen ermöglicht die Verarbeitung von bis zu 32767 Zeichen langen Pfaden, wie oben im Beispiel mit icacls dargestellt.

Enjoy it, b!

WISO EÜR & Kasse 2016 – msvcr120.dll

Es gibt Programme die haben immer mal wieder besondere Eigenarten an sich. Die Produkte von Buhl gehören dazu. Nachdem sich WISO EüR & Kasse 2016 problemlos installieren ließ wurde ich mit folgender Meldung beim Programmstart begrüßt.

image

Das Fehlen der msvcr120.dll, bzw. der msvcrXXX.dll deutet meistens darauf hin, dass die Runtime auf dem System nicht vorhanden ist. Bei mir handelt es sich um Windows 10, welches diese Runtime eigentlich von Haus an Bord hat. Eine Suche nach der DLL lieferte multiple Ergebnisse.

How ever – die Lösung des Problems lag in der Installation der Visual Studio 2013 Runtime, in der x86 Version (das Programm ist x86 und dafür brauchen wir die richtige DLL – das OS ist x64). Danach war ein Programmstart ohne Probleme möglich.

image

Enjoy it, b!

Pimp up my Zenbook (ASUS UX302L)

Eigentlich gehöre ich ja zur Fraktion Schraubendreher und Lötkolben, umso mehr hat es mich gefreut dieses mal wieder ein bisschen Hardware verändern zu dürfen. Konkret ging es um ein ASUS Zenbook UX320L welches mit einer Kombination aus 16GB SanDisk SSD sowie 1TB Festplatte ausgerüstet war. Trotz i5 und 8GB RAM war das Teil irgendwie zäh im Betrieb und so war schnell der Gedanke geboren die Festplatte gegen eine SSD (Samsung EVO 256GB) aus zu tauschen.

Ein Imaging des Betriebssystems wollte ich mir ersparen, da durch eine Neuinstallation eine Menge von unnützen und ggf. auch schädlichen Programmen vom System “entfernt” werden.

Wie die meisten Ultranotebooks hat auch das ASUS keinen expliziten Schacht welcher den Zugriff auf die SSD oder den Hauptspeicher ermöglicht, es sind also Montagearbeiten im größeren Umfang notwendig um die Festplatte gegen eine SSD zu wechseln. Da das aber der ASUS Support hin bekommt, kann es nicht unmöglich sein. Darüber hinaus bin ich bestimmt nicht der erste welcher die Sache in Angriff nimmt und so gibt es dafür auf YouTube zwei super Videos welche den Umbau zeigen:

Ich liefere hier nochmals die Schritte bebildert mit ein paar Kommentaren zusätzlich. Als Werkzeug habe ich folgende Dinge verwendet:

  • 1x PH0 Schraubendreher
  • 1x T5 Schraubendreher
  • 1x Kunsstoffheber
  • 1x Kunststoffdorn
  • 1x Schweizer Taschenmesser

Mit Ausnahme des Taschenmessers finden sich die anderen Dinge in dem iFixit Pro Tech Toolkit. Die passenden Werkzeuge aus dem Baumarkt tun es hier aber ebenfalls! Das von mir verwendete Taschenmesser ist ein Wenger (nicht Victorinox), welches als “kleine Klinge” eine Nagelfeile besitzt. Damit lassen sich problemlos Kunststoff und Gummifüße ohne diese zu beschädigen entfernen.

Öffnen des Bodendeckels

Der Bodendeckel des Zenbook ist über 9 kleine Schrauben (PH0) welche direkt sichtbar sind und über 2 verdeckte Schrauben (T5) mit dem Notebook verbunden. Um an die verdeckten Schrauben zu gelangen müssen die beiden Gummifüße entfernt und am Ende wieder angeklebt werden, dass habe ich mit dem Taschenmesser erledigt.

image

Nach dem Lösen der Schrauben ist allerdings der Boden immer noch am Notebook eingehakt. Diesen löst man durch den Kunststoffdorn wie im folgenden Bild gezeigt, durch einschieben und sanften Druck nach oben.

image

Hier empfehle ich auch das Video (Part 2) von oben nochmals an zu schauen. Da dieser Schritt mit ein wenig Kraft verbunden ist und zu einer Beschädigung, bzw. zu einem Verbiegen des Bodendeckels führen kann.

Hier nochmals ein Bild des verwendeten Werkzeugs.

image

Der Schritt ist jeweils an der linken und rechten Seite durch zu führen und danach ist das Innenleben des Notebooks frei zugänglich.

Demontage der Festplatte

Im Vergleich zu anderen Firmen hat ASUS im positiven Sinne einen erstaunlichen Aufwand getrieben die Komponenten zu verschrauben.

image

Die oben markierte Festplatte ist mit insgesamt 6 Schrauben mit dem Board verbunden. Damit wir an diese ran kommen, muss auch noch der Akku gelöst werden! Vorsicht – hier nicht die Verbindung mit dem Board beschädigen. Es reicht wenn der Akku rechts 5mm nach unten gerückt werden kann.

Da drunter sind auch noch Schrauben Smile

image

Die Schrauben welche den Akku befestigen sind gut sichtbar und können mit dem Kreuzschlitz gut gelöst werden.

Das folgende Bild zeigt die Verbindung des Akkus, auf die ein wenig geachtet werden sollte.

image

Darüber hinaus sehen wir hier noch die SanDisk SSD (16GB) welche wenn viel Platz notwendig ist ebenfalls gegen eine größere getauscht werden kann und zwei der Befestigungsschrauben des Akkus.

Durch ein Verschieben des Akkus gelangen wir an die beiden letzten Schrauben welche die Festplatte befestigen.

image

Nun kann problemlos der Ausbau der Festplatte erfolgen.

image

Der Festplattenrahmen

Die Festplatte und später die SSD werden durch einen Rahmen mit dem Board verbunden. Damit wir diese aus dem Rahmen lösen können, muss noch eine Schutzfolie abgezogen werden.

image

Das Abziehen der Folie ist bei mir ohne Fön gelungen und es sind nur geringe Rückstände vom Kleber auf der Festplatte geblieben (diese können mit Alkohol entfernt werden, oder einfach durch rubbeln mit dem Finger).

Nach dem Einbau der SSD habe ich die Schutzfolie wieder aufgebracht. Diese dient dazu einem elektrischen Kontakt zwischen der Festplatte und dem Bodendeckel zu verhindern. Nun hat die Samsung SSD keine leitenden Teile an ihrer Oberfläche, aber bevor ich die Schutzfolie weg werfe habe ich sie einfach wieder drauf geklebt, was im folgenden Bild zu sehen ist.

image

Nun folgt der Einbau des SSD.

Zusammenbau des Notebooks

Der Zusammenbau erfolgt in umgekehrter Reihenfolge. Also zuerst die SSD einbauen und dann den Akku wieder festschrauben.

image

Das nächste Bild zeigt alle wieder eingebauten Teile.

image

Nun wird der Bodendeckel wieder eingehakt und mit den Schrauben befestigt. Die beiden Gummifüße, habe ich nach eingehender Reinigung mit beidseitigem Klebeband versehen und befestigt.

image

Da sich die Gummifüße in einer Art Wanne am Bodendeckel befinden und das Notebook darauf steht, könnte das Klebeband ausreichen – was ich aber im Detail noch beobachten muss.

Zum Abschluss noch das von mir verwendete Werkzeug.

image

Ach ja, Windows 10 (Build 1511) wurde dann noch per USB Stick installiert, es werden von Windows alle Geräte erkannt, mit Ausnahme des Gerätes welches für die Intel Smart Connect Technology Application  notwendig ist. Die HardwareID dafür ist VEN_INT&DEV_33A0 und über den Link kommt die Anwendung samt des notwendigen Treibers.

Ich wünsche noch allen Lesern ein gutes Neues Jahr!

Enjoy it, b!

LSI 9240-4i und Supermicro X10SLM+-F

Im Zuge des im nächsten Jahr anstehenden Windows Server 2016 Releases, wollte ich meine Testumgebung wieder auf Vordermann bringen. Die beiden Server sind zwar CPU und RAM seitig gut ausgestattet aber eine 1,5TB Samsung SATA Platte war dann doch ein wenig knapp und darum wollte ich beide Systeme mit einem RAID Controller und 4x4TB Festplatten versehen. Aus den Platten will ich einen RAID 10 bauen (damit es ordentlich läuft) und darauf neben einem primären System mit Hyper-V noch mehrere Boot-from-VHD Instanzen laufen lassen … für die 8TB finden wir also schon Verwendung.

Der LSI Controller (inzwischen ein AVAGO / LSI 9240-4i Controller) war zusammen mit den Platten schnell eingebaut, kein Problem und auch das RAID war schnell erstellt Auf diesem RAID habe ich dann ein Volume mit 64GB gelegt und dieses im RAID Controller BIOS als “Bootable” markiert.

Danach kann die Installation des Betriebssystems beginnen, bei mir wie so oft Microsoft Hyper-V Server 2012 R2.

Leider wurde mir das Volume als Platte nicht im Setup angezeigt:

lsi-1

Für alle die jetzt denken “ließ mal richtig” … der Treiber ist INBOX, sprich Windows bringt einen Treiber mit, welchen man hinterher nur aktualisieren muss. Aber OK, ISO gebaut und über das IPMI Board den Treiber bereit gestellt … selbes Ergebnis – keine Platte.

Nach gefühlten 100 Konfigurationen im BIOS des Servers, mehrfachen löschen des RAIDs hatte ich mich entschlossen einen Call sowohl bei Supermicro als auch bei LSI/Avago zu öffnen. Da der Controller problemlos funktionierte wollte ich nicht so recht an einen Defekt der Hardware glauben.

Supermicro konnte mir hier nicht weiterhelfen (obwohl die Lösung hinterher bei denen lag). Aber der Support war schnell und sehr freundlich.

LSI hingegen dauert immer relativ lange – 4-5h zwischen den Mails, aber letztendlich kam von dort der richtige Hinweis:

image

Darauf habe ich mich entschlossen das BIOS des Servers zu aktualisieren, danach hat es auf Anhieb mit der Installation von Hyper-V Server 2012 R2 geklappt.

Hier noch die Daten dazu:

Controller: Avago / LSI 9240-4i, FW Package 20.12.1-0150, Firmware 2.130.394-2550, 4.36 Build March 25, 2013

Motherboard: Supermicro X10SLM+-F, BIOS 3.0, x10slh5_424.ZIP

image

Das Update des Motherboard BIOS war die Lösung. Nachdem der Server dann lief, habe ich sofort den LSI Controller ebenfalls mit dem aktuellsten BIOS versorgt.

Enjoy it, b!

Benutzer Konto läuft ab …

In den Home-Editionen von Windows hat Microsoft das Benutzer-Management eingeschränkt. So ist es z.B. nicht so einfach möglich einem Benutzer Konto das Ablaufen des Passworts ab zu gewöhnen. In den Pro-Editionen läßt sich das in den Eigenschaften des Kontos konfigurieren:

image

In den Home-Editionen bleibt nur die Möglichkeit über das WMI (was natürlich auch in den Pro-Editionen bzw. in Skripten möglich und hilfreich ist).

WMIC USERACCOUNT WHERE "Name='Support'" SET PasswordExpires=FALSE

Damit läßt sich auch in den Home-Editions ein Account ohne ablaufendes Passwort konfigurieren.

Update 2015-12-18:
Für einen Domain Account geht das natürlich auch, allerdings verwende ich in diesem Fall die dstools welche auf einem AD Controller vorhanden sind:

dsquery user domainroot -name "USERNAME" | dsmod user -pwdneverexpires YES

Enjoy it, b!

Troubleshooting Azure Backup

Dieser Beitrag behandelt gleich zwei Probleme welche ich mit dem Azure Backup Client auf Windows Server 2008 R2 hatte.

„Unable to execute the embedded application“ …

… error when you try to install the Microsoft Azure backup agent

Dafür liefert Microsoft sogar einen KB, wichtig ist hier das genau die im Artikel referenzierte VC Komponente verwendet wird und nicht etwa ein Update davon.

https://support.microsoft.com/en-us/kb/2934202

Danach klappt’s auch hier mit dem Backup. Interessanter ist jedoch das folgende Problem – und dessen Lösung.

ID: 100050 – Verbindung zu Microsoft Azure Backup

Nach der Installation des Azure Backup Clients ist unter Verwendung korrekter Tresoranmelde-Daten (Vault Credentials) keine Verbindung zu Azure Backup möglich. Die Netzwerkeinstellungen sind aber OK, der Server ist mit dem Internet verbunden!

image

Wenn die obigen Vorraussetzungen zutreffen, sollten einmal die Internet-Einstellungen des System-Accounts geprüft werden! Der Azure Backup Service läuft nämlich unter Local System und hat damit eigene Proxy-Einstellungen, welche möglicher Weise verändert wurden:

image

An diese gelangt man durch einen Aufruf des Internet Explorers durch psexec im Kontext von Local System.

psexec -i -s "C:\Program Files\Internet Explorer\iexplore.exe"

In dem nun gestartetem Internet Explorer kommt man über Extras / Internet Optionen / Verbindungen / LAN-Einstellungen zum Proxyserver welcher in diesem Fall konfiguriert war!

image

Hier alle Einstellungen raus nehmen und schon klappt es mit der Registrierung des Servers.

Update:
Optional kann man auch die Liste erweitern für die kein Proxyserver verwendet wird.

image

Hierzu die folgenden Einträge hinzufügen:

https://*.windows.net;https://*.windowsazure.com

Enjoy it, b!