Archive for Dezember 2014

Altes Windows XP aus VHD-Datensicherung wiederbeleben

31 Dezember 2014

Nur als Referenz, falls nochmals notwendig. Kurz die Situation, es gab einen Datenbestand auf den unbedingt zugegriffen werden musste. Allerdings war nur eine VHD-Komplettsicherung eines Windows XPs vorhanden. Man hätte nun zwar die Daten aus der VHD extrahieren können, allerdings lagen die Daten in einer Software vor, welche auf einem neuen Rechner nicht mehr installierbar war. Somit musste das alte XP-System reaktiviert werden. Dazu wurde die XP-Maschine als virtueller Rechner unter einem Hyper-V eingebunden. hier nun kurz die nötigen Schritte:

Diese Lösung setzt voraus, das Windows XP zum Einsatz kommt, nur eine Partition zurückgespielt werden muss und diese kleiner 128GB ist.

o Hyper-VM VM anlegen, falls Auswahl nur Generation 1
o Anlegen einer Partition die nicht größer als 128GB sein darf
o Booten von einer WinPE oder Windows-Start-CD
o Shift-F10 für Eingabeaufforderung
o Einbinden der VHD-Sicherung mittels DISKPART

DISKPART
SELECT VDISK FILE="Vollständige Pfad zu VHD-Datei"
ATTACH

o Einrichten und Formatieren des neuen Laufwerks

SELECT DISK 0
ACTIVE
CREATE PARTITION PRIMARY
FORMAT FS=NTFS QUICK
LIST VOLUME
EXIT

o Kopieren der Daten von VHD-Sicherung zum leeren Laufwerk. Dabei ist zu beachten, welche Laufwerksbuchstaben den Laufwerken bei der Ausgabe von obigem “List Volume” angezeigt werden. In meinen Beispiel war E: das Laufwerk mit der eingehängten VHD-Datei und C: die neue, noch leere Platte. Infos zu den Paramtern von XCOPY: http://support.microsoft.com/kb/323007/de.

XCOPY E:\*.* C:\  /O X /E H /K
BOOTSECT /NT52 C: /MBR

o Damit die Geschichte unter Hyper-V bootbar ist und kein “Inaccessible Bootdevice” Fehler auftritt, muss noch ein IDE-Treiber aktiviert werden. Weitere Infos hier: https://newyear2006.wordpress.com/2009/09/12/computer-bzw-hardware-virtualisieren-p2v-fr-microsoft-hyper-v-server/

REG LOAD HKLM\Temp C:\WINDOWS\SYSTEM32\CONFIG\SYSTEM
REG ADD "HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_7111"
REG ADD "HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_7111" -v Service -t REG_SZ -d intelide 
REG ADD "HKLM\Temp\ControlSet001\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_7111" -v ClassGUID -t REG_SZ -d "{4D36E96A-E325-11CE-BFC1-08002BE10318}"
REG ADD HKLM\Temp\ControlSet001\Services\intelide -v start -t REG_DWORD -d 0

REG UNLOAD HKLM\Temp

Das wars auf die Schnelle. Die Methode funktioniert im Prinzip auch bei Windows Vista, 7,8 usw. Allerdings muss man dort mit /NT60 bei BOOTSECT arbeiten und darauf Rücksicht nehmen, dass mehrere Partitionen vorhanden sind.

Vorhandene Windowsversionen aus Windows-Installations-ISO-Datei ausgeben

30 Dezember 2014

Wenn man eine Windows-Installations-ISO-Datei hat und schnell wissen möchte, welche Versionen darin enthalten sind, gibt es verschiedene Möglichkeiten dies herauszufinden.

Wenn man Windows 8 oder neuer hat, dann kann man dies mittels Powershell über diesen Einzeiler:

$m=Mount-DiskImage -ImagePath "C:\Temp\MS-ISOs\de_windows_8.1_with_update_x64_dvd_6051485.iso" -PassThru ; Get-WindowsImage -ImagePath "$(($m| Get-Volume).DriveLetter):\sources\install.wim";
$m|Dismount-DiskImage

Führt zum Ergebnis:

Index       : 1
Name        : Windows 8.1 Pro
Description : Windows 8.1 Pro
Size        : 13.324.853.116 bytes

Index       : 2
Name        : Windows 8.1
Description : Windows 8.1
Size        : 13.260.872.008 bytes

Der Reihe nach:

$m=Mount-DiskImage -ImagePath "C:\Temp\MS-ISOs\de_windows_8.1_with_update_x64_dvd_6051485.iso" -PassThru ;

Öffnet eine ISO-Datei und reicht das Objekt an $m weiter.

Get-WindowsImage -ImagePath "$(($m| Get-Volume).DriveLetter):\sources\install.wim";

Ermittelt den bei Mount-DiskImage vergebenen Laufwerksbuchstaben und schaut unter diesem im Verzeichnis nach der X:\Sources\Install.WIM-Datei. Dort werden mittels Get-WindowsImage die verfügbaren Versionen ermittelt und ausgegeben.

$m|Dismount-DiskImage

Entfernt das eingehängte ISO-Image wieder. Das wars.

Wenn sich mal wieder die BIOS Einstellungen nicht speichern lassen

30 Dezember 2014

Nur für künftige Aktionen, damit ich das nächste Mal nicht unnötig Batterien verbrenne. Wenn das BIOS die Meldung:

CMOS Settings Wrong
CMOS Date/Time Not Set
Press F1 to run SETUP

erscheint, so sollte man die Motherboard-Batterie austauschen, wenn es danach aber immer noch nicht klappt, hilft ein CMOS-Reset! Scheinbar war es dem NVRAM davor nicht möglich die Daten ordentlich zu speichern, obwohl beim Verlassen des BIOS keine negative Meldung angezeigt wurde, dass die Daten nicht gespeichert werden konnten.

Mit den BIOS Einstellungen kann man viel Spaß haben: https://newyear2006.wordpress.com/2012/11/27/rechner-geht-einfach-nach-anzeige-von-starting-windows-aus/

Format-Hex für Powershell

28 Dezember 2014

Soviel man mit Powershell auch machen kann eine entscheidende Funktion die fehlt ist Format-Hex, um z. B. eine Datei oder ein Bytearray als Hexdump ausgeben zu können.

Aber wie immer gibt es Lösungen im Internet. So hat Lee Holmes die Funktion bereits gebaut. Die Version ist gut aber besser ist die etwas erweiterte und fehlerbereinigte Version, die hier zu finden ist: https://gist.github.com/newyear2006/aae98d1c9c2fbdaba179.

Damit kann man ganz einfach Dinge machen wie z. B.

"Hallo Welt"| Format-Hex

Was dann zur Ausgabe hat:

          0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

00000000 48 00 61 00 6C 00 6C 00 6F 00 20 00 57 00 65 00  H.a.l.l.o. .W.e.
00000010 6C 00 74 00                                      l.t.
          

Mit dem Paramter –NoHeader sieht es dann so aus:

00000000 48 00 61 00 6C 00 6C 00 6F 00 20 00 57 00 65 00  H.a.l.l.o. .W.e.
00000010 6C 00 74 00                                      l.t.
          

Mit zusätzlicher Angabe von –NoCounter siehts so aus:

48 00 61 00 6C 00 6C 00 6F 00 20 00 57 00 65 00  H.a.l.l.o. .W.e.
6C 00 74 00                                      l.t.
          

Aber man ist nicht begrenzt auf die Ausgabe von Strings, sondern kann auch Bytearrays ausgeben:

$text = "Hallo Wörld!"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$bytes | Format-Hex -NoHeader -NoCounter

sieht dann so aus:

48 61 6C 6C 6F 20 57 C3 B6 72 6C 64 21       Hallo Wörld!

Hier sieht man nun deutlich die Umwandlung des ö in zwei Bytes bei UTF8 mittels C3 B6.

Hier gibts noch weitere Powershell Hex-Funktionen: https://newyear2006.wordpress.com/2011/06/20/powershell-und-byte-array-sowie-hex-funktionen/

Zertifikatsdialoge aus Powershell heraus anzeigen

28 Dezember 2014

Beim beschäftigen mit Zertifikaten in Powershell wäre es manchmal hilfreich ein Zertifikat in der üblichen Darstellung unter Windows angezeigt zu bekommen. Dank der nahen Anbindung zum .Net Framework ist dies recht einfach möglich.

Hier ein Beispiel, es wird ein beliebiges Zertifikat zu Demonstrationszwecken ermittelt:

$c=dir cert:\CurrentUser\My| select –First 1

Das Zertifikat in $c kann nun mittels dieses Aufrufs im üblichen Windows Dialog angezeigt werden:

[System.Security.Cryptography.X509Certificates.X509Certificate2UI]
::DisplayCertificate($c)

Beide Zeilen gehören direkt aneinander in eine Zeile!

Aber es geht noch besser. Man kann auch einen Auswahldialog öffnen, mit einer Auswahl von Zertifikaten und dann dem Benutzer einen Dialog anzeigen, wo er das passende Zertifikat auswählen kann.

Zunächst brauchen wir ein paar Zertifikate:

$cs=dir cert:\CurrentUser\My

Leider handelt es sich bei $cs nun um ein Array von Zertifikaten. Damit der Auswahldialog funktioniert, muss eine Zertifikatkollektion vom Typ X509Certificate2Collection übergeben werden. Diese erhält man aber ganz einfach, durch diesen Schritt:

$col=[System.Security.Cryptography.X509Certificates.
X509Certificate2Collection]::new($cs)

Bei obiger Zeilen muss wieder alles in eine Zeile hintereinander geschrieben werden.

Nun hat man auf jeden Fall eine Zertifikatskollektion in $col. Damit kann man nun diesen Aufruf durchführen:

$c=[System.Security.Cryptography.X509Certificates.
X509Certificate2UI]::SelectFromCollection($col,"Überschrift", "Hinweistext", [System.Security.Cryptography.X509Certificates.
X509SelectionFlag]::SingleSelection)

Man bekommt nun alle Zertifikate in $col angezeigt und kann sogar noch die Überschrift und einen Hinweistext beeinflussen. Nach der Auswahl bekommt in $c das ausgewählte Zertifikat zugewiesen.

Hier noch die API-Links:
DisplayCertificate:
http://msdn.microsoft.com/de-de/library/ms223201(v=vs.110).aspx
SelectFromCollection:
http://msdn.microsoft.com/de-de/library/ms223189(v=vs.110).aspx
X509Certificate2Collection:
http://msdn.microsoft.com/de-de/library/system.security.cryptography.x509certificates.
x509certificate2collection(v=vs.110).aspx

Erweitertes Bootmenü bei Start von Windowsrechnern anzeigen

28 Dezember 2014

Bei neueren Rechnern und optimalen Bios bzw. UEFI-Einstellungen ist es manchmal recht schwer bzw. unmöglich beim Starten des Rechners das erweiterte Bootmenü mittels F8 zu aktivieren.

Wenn der Rechner bereits hochgefahren ist, kann man sich aber behelfen, indem man einen speziellen Parameter mittels BCDEDIT.EXE setzt. Dadurch wird das erweiterte Bootmenü immer angezeigt, bis es wieder explizit abgeschaltet wird:

bcdedit /set {bootmgr} displaybootmenu yes

Zum Ausschalten verwendet man dann später wieder:

bcdedit /set {bootmgr} displaybootmenu no

Nun kann man zwischen den Bootvorgängen in aller Ruhe das passende Auswählen. Hier noch eine bebilderte Anleitung: http://support2.microsoft.com/kb/2809468/en.

Die Variante klappt übrigens auch bei Windows 7. Besonders wertvoll ist es auch bei Verwendung von virtuellen Maschinen, wo man oft noch nicht den passenden Tastaturfokus hat.

Hier die aktuellste Beschreibung von BCDEDIT /set und die möglichen Parameter: http://msdn.microsoft.com/en-us/library/windows/hardware/ff542202(v=vs.85).aspx.

Eine kurze Erklärung zu {bootmgr} erhält man über:

bcdedit /? ID

Hier noch der Link zur offiziellen BCDEDIT-Befehlszeilenreferenz: http://technet.microsoft.com/en-us/library/cc731662.aspx. Leider wie so oft ziemlich unbrauchbar.

Unter Windows 8 und Server 2012 bzw. dessen Nachfolger kann man mittels

bcdedit /set {current} onetimeadvancedoptions on 

das Menü auch nur einmalig für den nächsten Bootvorgang aktivieren.

Exchange Server 2003 nach Exchange Server 2013 umziehen

27 Dezember 2014

Mit dem Ende von Exchange Server 2003 und dem endgültigen Ende im kommenden Jahr des Supports für Windows Server 2003 R2 muss man sich Gedanken machen, wie eine Migration aussehen könnte. Ein schöner Artikel der einige wichtige Aspekte anspricht, ist hier zu finden: https://justaucguy.wordpress.com/2014/07/31/exchange-2003-eol-and-migrating-to-2013/.

Azure Root Cause Analysis kurz RCA

18 Dezember 2014

Wieder was dazu gelernt. Nach dem gestrigen Artikel https://newyear2006.wordpress.com/2014/12/17/microsoft-azure-ausfall-von-vms-storage-und-weiteren-diensten-am-18-11-2014-bzw-19-11-2014/ bin ich heute noch über den Begriff RCA gestolpert. RCA steht für Root Cause Analysis. Muss man sich merken, denn darüber werden in Zukunft die Azure Probleme dargestellt und näher analysiert. Der Blogeintrag ist gestern irgendwie an mir vorbei oder war noch nicht erschienen. Auf jeden Fall wird alles nochmal deutlich beschrieben: http://azure.microsoft.com/blog/2014/12/17/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/

Schade ist nur, dass im Blogeintrag Verbesserungen in der Kommunikation angekündigt werden, ohne konkret eine offizielle Twitteradresse oder alternative Seite zu nennen.

Microsoft Azure Ausfall von VMs, Storage und weiteren Diensten am 18.11.2014 bzw. 19.11.2014

17 Dezember 2014

Alles strebt in die Cloud aber was, wenn die Cloud bockt? Microsofts Azure hatte am 18. bzw. 19.11.2014 einen größeren Ausfall. Dabei ging es nicht um Sekunden, Minuten oder Stunden, nein es ging um teilweise zwei Tage!

Hier der Link zum Blogeintrag: http://azure.microsoft.com/blog/2014/11/19/update-on-azure-storage-service-interruption/. Die Sache war sogar so heftig, dass auch Kunden ohne Wartungsvertrag sich an Microsoft wenden durften.

Hier eine tiefergehende Erläuterung des Vorgangs von Mark Russinovich: http://channel9.msdn.com/posts/Inside-the-Azure-Storage-Outage-of-November-18th.

Was mich an der Sache stört, ist, dass davon auf heise.de nichts zu hören war. Es handelt sich ja nicht um einen kurzen Ausfall sondern war mit zwei Tagen ja schon heftiger. Hier gibt es keinen Newseintrag, wenn man sich den Zeitraum vom 18./19. November anschaut: http://www.heise.de/suche/?q=azure&search_submit=Suchen&rm=search&channel=newsticker. Stellt sich die Frage, hat es keiner bemerkt oder durfte nicht berichtet werden? Andere Newsseiten haben darüber berichtet: http://www.computing.co.uk/ctg/news/2382347/microsoft-azure-suffers-huge-outage-affecting-websites-and-office-365.

Wenn man die Abhängigkeiten von Office365 in Bezug auf Azure kennt, dann sollte doch da eine kritische Masse erreicht worden sein oder nicht? Der Link bei www.computing.co.uk spricht zumindest von Problemen mit Office365.

Auf jeden Fall war das perfide an der Sache, dass die offizielle Azure-Statusseite http://azure.microsoft.com/en-us/status/#current über mind. drei Stunden nicht den tatsächlichen Status der Azure Cloud wiedergegeben hat, sondern dass alles OK wäre. Auch von der Statusseite abhängige APIs waren davon betroffen. Dies wird im Channel9 Video von Mark Russinovich auch nochmal angesprochen. So verstehen sich dann auch die teilweisen harschen Reaktionen im Kommentarbereich des Azure-Blogartikels. Da sind Stunden mit der Fehlersuche verbracht worden, weil die Statusanzeige ja grün war, also liegt das Problem woanders. Aber wo? Und wie kann man als kleine IP-Adresse in der Riesenwolke etwas nachvollziehen bzw. debuggen? Da wird der fähigste Administrator kalt gestellt. Aber das ist unsere Zukunft!

Ich zitiere hier einen Kommentar zum Vorgang, der die Probleme schön illustriert:

ripvannwinklera month ago

Blah blah blah. As others have said:

1. The dashboard inaccurately reflected service status nearly the entire time. A status dashboard should not be a publicity mechanism. If it doesn’t work, fix it. You suck.

2. The outage should have NEVER been rolled out across data centers like it was. I don’t care if infrastructure designs required it – you messed up.

3. I have clients seriously questioning our decision to use Microsoft Azure. It’s upon Microsoft’s head to make this right. BS explanations do nothing to rectify lost time and money or compensate my clients. That falls on me, and as a customer, what reason could I possibly have to trust Azure not to let it happen again in the future?

This is NOT ENOUGH. If you think it is, maybe we should just throw in the Azure towel now?

So ein Ausfall stellt sich dann (gelbe Markierungen von mir) in der Historie der Azurestatusseite als

11/19

Multiple Azure Services – Multiple Regions – Partial Service Interruption

From 19 Nov, 2014 00:52 to 04:40 UTC a subset of customers using Storage, Virtual Machines, SQL Geo-Restore, SQL Import/export, Websites, Azure Search, Azure Cache, Management Portal, Service Bus, Event Hubs, Visual Studio, Machine Learning, HDInsights, Automation, Virtual Network, Stream Analytics, Active Directory, StorSimple, Azure Site Recovery and Azure Backup Services in North Europe, Japan East and Japan West experienced connectivity issues. This incident has now been mitigated.

11/19

Multiple Azure Services – Multiple Regions – Partial Service Interruption

From 19 Nov, 2014 00:52 to 05:10 UTC a subset of customers using Storage, Virtual Machines, SQL Geo-Restore, SQL Import/export, Websites, Azure Search, Azure Cache, Management Portal, Service Bus, Event Hubs, Visual Studio, Machine Learning, HDInsights, Automation, Virtual Network, Stream Analytics, Active Directory, StorSimple, Azure Site Recovery and Azure Backup Services in East US 2, South East Asia and East Asia experienced connectivity issues. This incident has now been mitigated.

11/19

Websites – West Europe – Advisory (Limited Impact)

Starting at 19 Nov 2014 00:52 UTC a subset of customers using Websites in West Europe may have experienced partial service degradation. Engineering reported as mitigated at 11:45AM UTC and continued to monitor until 12:45 PM. This issue is now mitigated.

11/19

Storage – West Europe – Partial Service Interruption

From 19 Nov, 2014 00:52 to 09:15 UTC a subset of customers using Storage in West Europe may have experienced intermittent connectivity issues. This incident has now been mitigated. Further information is available to potentially impacted customers through the Azure Management Portal – http://manage.windowsazure.com

11/19

Application Insights – Multi-Region – Advisory

From 19 Nov 2014 at 01:00 to 12:34 UTC, Application Insights customers using the Azure Preview Portal (portal.azure.com) experienced higher than normal data latency. Please visit the Visual Studio Online blog at http://blogs.msdn.com/b/vsoservice/archive/2014/11/19/issues-with-application-insights-services-11-19-mitigating.aspx for additional information. This incident has now been mitigated.

11/19

Virtual Machines – North Europe – Advisory

This issue is now mitigated for North Europe. We continue to investigate and address issues impacting a limited subset of Virtual Machines customers in West Europe. A subset of customers may see their VMs in continual "Start state”, and limited subset of customers may have difficulty in connecting to their VMs. Potentially impacted customers are advised to continue to visit the Management Portal http://manage.windowsazure.com for more frequent regional details.

usw. dar. Im letzten Statuseintrag sogar ganz ohne Stundenangabe. Der Phantasie darf freien Lauf gelassen werden, wie lange eine VM ausfallen konnte.

Kommen wir zum wahrscheinlich wichtigsten Punkt: Wie kann man die Cloud testen? Ein Datacenter kann man evtl. noch nachbilden und ein Testdatacenter aufbauen um kritische Infrastrukturupdates prüfen zu können. Aber wie kann man die Cloud, welche sich global ausbreitet, testen? Ist doch einfach, man nehme eine zweite Erde für Testzwecke…

Wenn Maus und Tastatur an einem Windows Rechner nicht mehr reagieren

14 Dezember 2014

Ein Kunde hatte ein Problem mit seinem Windows 7 Rechner. Das interessante daran war, dass Tastatur und Maus nicht mehr funktionierten, wenn Windows hochgefahren war. Er hatte die Passworteingabe beim Hochfahren deaktiviert, so dass der Rechner immer bis zum Desktop bootete. So konnte man schon beobachten, dass alles sauber geladen wurde nur am Ende war keinerlei Maus und Tastatureingabe möglich. Der Mauszeiger konnte nicht einmal bewegt werden.

Der Rechner konnte problemlos durch drücken des Ausschaltknopf sauber heruntergefahren werden. Die Maus und Tastatur konnten an anderen Ports eingesteckt werden und es erschien die Meldung, dass Treiber installiert werden und dass das Gerät nun benutzt werden kann. Jedoch war dies nie möglich.

Bei weiteren Versuchen stellte es sich heraus, dass auch eine PS/2-Tastatur nicht funktionierte. Ein generelles Hardwareproblem konnte aber ausgeschlossen werden, da Maus und Tastatur problemlos unter WindowsPE oder im BIOS funktionierten. Ein weiterer Aspekt war, dass Multimediatasten wie E-Mail, Calculator usw. einer Multimediatastatur auch funktionierten.

Ein Starten des Rechners im abgesicherten Modus brachte leider auch nichts.

Also alles neu installieren? Nein.

Zwei Dinge helfen:
Die Verwendung der erweiterten Startoptionen und Aufruf von Computer reparieren. http://windows.microsoft.com/de-de/windows/advanced-startup-options-including-safe-mode#1TC=windows-7. Hier kann man die Systemwiederherstellung aufrufen, damit ein früherer Zustand aktiviert werden kann, der funktionierte – soweit vorhanden.

Die zweite Lösung wäre das entfernen von Kaspersky Maus und Tastaturtreibern. Dazu musste man nur in der Registrierung unter Upperfilters nach klkbdflt und klmouflt suchen und diese entfernen. Detailliert hier beschrieben: http://support.kaspersky.com/general/products/10663#block7. Diese Lösung funktionierte, weil der Kunde davor versucht hatte Kaspersky zu installieren und dabei scheinbar etwas schiefgegangen war. Hat man die Kaspersky-Treiber entfernt, stehen nur noch kbdclass und mouclass in der Registrierung. Übrigens muss man nicht zwingend die Kaspersky Rescue Disk verwenden, sondern kann auch mit einem WinPE oder Windows Bootmedium booten und die Registrierungseinträge darüber ändern.