VirtualBox Probleme mit 64-Bit Gast und das Ding mit dem Client-Hyper-V

31 Oktober 2014

Als bekennender Hyper-Vler bin ich über ein Problem gestoßen. Es ging darum eine virtuelle Maschine zu haben, über die man problemlos auf den USB Port losgehen kann. Leider ist da Hyper-V auch in aktuellen Ausprägungen nicht so der Bringer. Also nimmt man einen anderen VM-Host, wie in diesem Fall VirtualBox von Oracle: https://www.virtualbox.org/.

Nach der Installation war es aber nicht möglich ein 64-Bit Gastsystem aufzusetzen. Nach dem üblichen Überprüfen der BIOS-Einstellungen, damit auch die nötigen Virtualisierungseinstellungen aktiv waren, funktionierte es immer noch nicht. Dann diesen Artikel gelesen: https://forums.virtualbox.org/viewtopic.php?f=1&t=62339. Aha Hyper-V! Aber der läuft doch gar nicht!?!?

PS C:\Windows\system32> Get-Service -DisplayName *hyper*

Status   Name               DisplayName
——   —-               ———–
Stopped  vmicguestinterface Hyper-V-Gastdienstschnittstelle
Stopped  vmicheartbeat      Hyper-V-Taktdienst
Stopped  vmickvpexchange    Hyper-V-Datenaustauschdienst
Stopped  vmicrdv            Hyper-V-Remotedesktopvirtualisierun…
Stopped  vmicshutdown       Hyper-V-Dienst zum Herunterfahren d…
Stopped  vmictimesync       Hyper-V-Dienst für Zeitsynchronisie…
Stopped  vmicvss            Hyper-V-Volumeschattenkopie-Anforderer
Stopped  vmms               Hyper-V-Verwaltung für virtuelle Co…

PS C:\Windows\system32>

Dann Hirn eingeschaltet und an BCDEdit erinnert, dass es dort zig Einstellmöglichkeiten zum Hyper-V gibt. http://msdn.microsoft.com/en-us/library/windows/hardware/ff542202(v=vs.85).aspx.

OK, dann mal nachgeschaut:

bcdedit /enum

Dabei wurde folgendes ausgegeben:

Windows-Startladeprogramm
————————-
Bezeichner              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 8.1
locale                  de-DE
inherit                 {bootloadersettings}
recoverysequence        {4b6f8314-5573-15e4-b299-de2a5ae3ac48}
integrityservices       Enable
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {4b6f8312-5575-15e4-b299-de2a5ae3ac48}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

Ja alles klar. HypervisorLaunchtype steht auf Auto und sollte entweder nicht da sein oder auf Off stehen.

Hier wird beschrieben wie man einen weiteren Eintrag im Bootmenü generieren kann: http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx

Dadurch kann man beim Rechnerstart auswählen, ob der Hyper-V Hypervisor aktiviert werden sein soll oder nicht.

Entscheidend dabei sind:

C:\>bcdedit /copy {current} /d "No Hyper-V" 
The entry was successfully copied to {ff-23-113-824e-5c5144ea}.

C:\>bcdedit /set {ff-23-113-824e-5c5144ea} hypervisorlaunchtype off
The operation completed successfully.
Dadurch wird ein weiterer Eintrag ins Bootmenü geschrieben. Die GUID
ff-23-113-824e-5c5144ea sieht aber bei jedem anders aus. Es stellt nur
eine eindeutige Kennung dar.

Da aktuelle Rechner recht schnell beim Booten sind, hilft ein weiterer BCDEdit Befehl in Zukunft den richtigen Eintrag beim Start automatisch auszuwählen:

bcdedit.exe /bootsequence {ff-23-113-824e-5c5144ea}


shutdown.exe /r /t 0 /f

Damit wird der Rechner mit dem neuen Bootmenüeintrag gestartet.

Man könnte dies nun über Powershell automatisieren aber der BCD WMI Provider hat so scheinbar seine Tücken: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/18094085-781f-4649-8ff8-331388097911/how-to-get-boot-configuration-data-bcd-information-out-of-wmi-with-powershell?forum=ITCG

Sich schnell über die Zuverlässigkeit eines Rechners informieren mittels des Verlauf der Zuverlässigkeitsüberwachung

23 Oktober 2014

Seit Windows Vista bereits gibt es die Zuverlässigkeitsüberwachung. Für Commandliner kann der Status so aufgerufen werden:

control  /name "Microsoft.ActionCenter" /page pageReliabilityView

Hier ein Beispielbild was angezeigt werden könnte:

image

Interessant dabei sind die roten umkreisten X-Eintragungen. Diese sind auf unterschiedlichen Ebenen. Doch was hat die jeweilige Ebene für eine Bedeutung?

Die oberste Ebene stellt Probleme mit Anwendungen dar. D. h. jedes mal wenn eine Anwendung abstürzt und nicht regulär beendet wird, erfolgt dort ein Eintrag.

Die Ebene darunter stellt Probleme von Windowskomponenten dar, wie z. B. Bluescreens.

Die nächste Ebene darunter stellt ganz einfach dar, wenn Windows einfach abgeschaltet wurde. D. h. Strom weg oder den Ausschalter länger als 4 Sekunden gedrückt.

Zusammenfassend gilt:

Ebene Symbol Bereich
1 Kritisch Anwendungsprobleme
2 Kritisch Windowsprobleme (Bluescreen, Treiber etc.)
3 Kritisch Stromausfall oder Freeze
4 Warnung Warnungen z. B. über fehlgeschlagene Updates
5 Info Informationen z. B. erfolgreiche Updates

Übrigens kann man auf die Zuverlässigkeitsdaten auch per Powershell und WMI zugreifen: http://newyear2006.wordpress.com/2009/12/14/powershell-windows-7-zuverlssigkeitsabfrage-grafisch-dargestellt/

Festplatten löschen (wipen) mit Windows Bordmitteln

23 Oktober 2014

Unglaublich was man manchmal für Entdeckungen macht und sich wundert, warum man davon noch nie gehört hat. Per Zufall bin ich heute über Cipher.EXE gestolpert. Hatte ich zuvor noch nie gehört. Wenn man die Hilfe von Cipher.EXE anschaut, dann wird schnell klar, dass es für die Verschlüsselung von Dateien und Verzeichnissen zuständig ist.

Aber dann taucht da auch der Parameter /W für Wipe auf:

    /W       

Entfernt Daten aus verfügbarem, nicht verwendetem Speicherplatz auf dem Volume. Alle anderen Optionen werden ignoriert, wenn diese Option ausgewählt wird. Das angegebene Verzeichnis kann sich an einer beliebigen Position auf dem lokalen Volume befinden. Wenn es sich um einen Bereitstellungspunkt oder einen Verweis auf ein Verzeichnis auf einem anderen Volume handelt, werden die Daten auf diesem Volume entfernt.

Es agiert also nicht wie Sdelete von Sysinternals und überschreibt bestehende Dateien, sondern überschreibt den freien Speicherbereich eines Volume.

Wenn man nun eine Festplatte mittels DISKPART Befehl CLEAN löscht, dann eine Partition darauf einrichtet, dann kann man mittels CIPHER /W die Festplatte komplett löschen.

Spannend wird die Sache in Verbindung mit WinPE. Schade das WinPE, WinRE und die Windows-Bootmedien keine direkte Unterstützung für CIPHER.EXE haben. Aber oft hat man ja sowieso irgendwo ein Windows bzw. auf der zu löschenden Platte ein vorhandenes Windows.

Man muss also einfach nur CIPHER.EXE von der lokalen Windows-Installation kopieren. Dabei ist allerdings zu beachten, ob die WinPE-Umgebung 32-Bit oder 64-Bit unterstützt. Je nachdem verwendet man dann C:\Windows\System32\cipher.exe oder C:\Windows\SysWOW64\cipher.exe. Wenn die Cipher.EXE von dem Laufwerk kommt, welches gelöscht werden soll, kopiert man es auf das RAM-Laufwerk X: und startet es von dort aus.

Ach noch was: Man könnte auch den CLEAN Befehl mit dem Parameter ALL bei DISKPART verwenden, dann würde auch alles mit 0x00 überschrieben. Warum sollte man dann CIPHER.EXE verwenden? CIPHER.EXE geht beim Überschreiben anders vor, es überschreibt in drei Durchgängen. Zuerst wird alles mit 0x00 dann mit 0xFF und am Schluss mit Zufallswerten überschrieben. Dies ist auch der Grund, warum CIPHER.EXE nachgesagt wird, es wäre langsam.

http://blogs.technet.com/b/chad/archive/2012/08/16/tip-53-wipe-your-hard-drive-without-any-extra-programs.aspx

Und noch was: Bei SSDs gibt es nicht die sichere Möglichkeit wirklich alles zu löschen. In diesem Fall sollte man schauen, ob die betreffende SSD eine interne AES-Verschlüsselung bietet und ob man dort den zugehörigen Key löschen kann.

Geblockte Dateien von Downloads zulassen

7 Oktober 2014

Wenn man Dateien unter Windows aus dem Internet lädt, werden diese mit dem sogenannten Zone.Identifier in einem Alternate-Data-Stream erweitert. Ist der Zone.Identifier vorhanden und ein Eintrag unter der Sektion [ZoneTransfer] mit ZoneID=3 gesetzt, reagieren viele Windows Programme anders. Bei EXE-Dateien erscheint immer zusätzlich eine Rückfrage, ob die Datei geöffnet werden soll.

Im Explorer lässt sich die Information entfernen, wenn man die Eigenschaften der Datei mittels Rechtsklick öffnet und Zulassen anklickt.

In der Eingabeaufforderung wird die Sache etwas schwieriger. Es sei denn man hat Powershell 3.0 oder höher. Dort gibt es den Befehl Unblock-File.  http://technet.microsoft.com/en-us/library/hh849924.aspx

Wer das Problem hat, nur Powershell 2.0 zur Verfügung zu haben, der wird sich über diese Powershell-Funktion freuen: http://andyarismendi.blogspot.de/2012/02/unblocking-files-with-powershell.html.

Allgemein zum Thema: http://stackoverflow.com/questions/1617509/unblock-a-file-with-powershell. Weitere Möglichkeiten: http://www.robvanderwoude.com/amb_filestreams.php

Von Sysinternals gäb es auch noch was: Streams: http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx

Protokoll zu Alternate Data Streams: http://msdn.microsoft.com/en-us/library/dd433166.aspx

Windows 10 und die wirklichen Neuerungen

7 Oktober 2014

Gerade wird viel über Windows 10 geschrieben. Das meiste hält sich jedoch an Banalitäten wie dem nun wieder verfügbaren Startmenü auf. Das Highlight ist natürlich die Möglichkeit in der Eingabeaufforderung nun mittels STRG+V etwas aus der Zwischenablage einzufügen (http://blogs.msdn.com/b/winsdk/archive/2014/10/02/windows-10-threshold-changes-to-the-windows-command-prompt.aspx). Aber ganz ehrlich? Das geht jetzt auch bereits, man muss nur die Powershell ISE verwenden!

Also alles für die Katz? Wenn man sich die richtigen Dokumente anschaut, dann kann man doch sehen, wo im Unterbau tatsächlich gearbeitet wurde.

Zuvorderst ist dabei Powershell 5.0 zu nennen, aber das gibt es ja auch so mit dem Management Framework 5.0 Preview bereits für Windows 8.1 und Server 2012 R2. Die Highlights dabei natürlich DSC und OneGet bzw. PowershellGet.

Wer etwas tiefer schaut, wird dann dieses Dokument mit Namen “Open Specifications Preview Specifications” entdecken: http://www.microsoft.com/en-us/download/details.aspx?id=9101. Hier sind alle internen Protokoll-Änderungen dokumentiert, welche für das neue Windows 10 angedacht sind. Wenn man aber die Dokumente so durchschaut, findet sich nicht eine Architekturänderung sondern überwiegend Nuancen und Verfeinerungen. Im Active Directory z. B.  um Mobile Geräte mit verwalten zu können, eine kleine Erweiterung der Firewall, eine Erweiterung für Miracast um den Cursor schneller darzustellen usw.

Für den neuen Windows Server findet man die Änderungen im Klartext hier beschrieben: http://technet.microsoft.com/en-us/library/dn765472.aspx

Rechtfertigt dies nun den Ausspruch von Terry Myerson, Windows 9 wäre nicht passend weil sich soviel geändert hat? Wohl kaum, es ist vielmehr mal wieder Marketinggeschwafel. Der Grund für 10 ist sicher dieser: http://www.heise.de/newsticker/meldung/Diskussion-ums-neue-Windows-Warum-nicht-9-2411563.html

Oder werden sie bei den kommenden Konsumerversionen erst den Schleier lüften? Vielleicht indem Sie Android Apps direkt unterstützen? Ach nein, geht ja nicht mehr, Google war schon cleverer: http://www.heise.de/newsticker/meldung/Android-Apps-laufen-im-Chrome-Browser-2411092.html.

OK, für Gamer kommt wahrscheinlich DirectX 12: http://blogs.msdn.com/b/directx/archive/2014/10/01/directx-12-and-windows-10.aspx

Im IE haben sie klammheimlich die Unterstützung für HTTP2 implementiert: http://blogs.msdn.com/b/ie/archive/2014/10/01/internet-explorer-and-the-windows-10-technical-preview.aspx.

Alles zusammen aber doch eher ein überschaubares Update und nicht ein revolutionäres Windows 10, was den Versionssprung rechtfertigen könnte.

Drucker mittels Powershell in Windows 8.1 kopieren

30 September 2014

Leider gibt es seit Jahren unter Windows keine einfache Möglichkeit einen Drucker zu kopieren. Gemeint sind die Drucker die nach Aufruf von

Control Printers

angezeigt werden.

Dank Powershell ist dies nun unter Windows 8.1 mit den Drucker-Cmdlets  sehr einfach möglich.

Man ruft einfach

Get-Printer | Out-GridView -Title "Quelldrucker auswählen" -PassThru | foreach {Add-Printer -DriverName $_.DriverName -Name "$($_.Name) Kopie" -PortName $_.PortName}

auf und bekommt eine Auswahl der installierten Drucker angezeigt, kann den gewünschten auswählen und klickt auf OK. Man bekommt den neuen Drucker mit dem Namen des alten und dem Anhängsel Kopie angelegt.

Wie immer gibt es aber eine Ausnahme: Leider funktioniert obige Methode nicht bei Druckern die von einem anderen Rechner kommen, die also über die Variante \\Server\Freigabe angesprochen werden. Wird solch ein Drucker versucht zu kopieren, erscheint diese Fehlermeldung:

Add-Printer : Der angegebene Anschluss ist nicht vorhanden. Verwenden Sie "add-printerport", um einen neuen Anschluss hinzuzufügen, oder geben Sie einen vorhandenen
Anschluss an.
In Zeile:1 Zeichen:81
+ Get-Printer | Out-GridView -Title "Quelldrucker auswählen" -PassThru | foreach { …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_Printer:ROOT/StandardCimv2/MSFT_Printer) [Add-Printer], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070704,Add-Printer

Wenn man man einen Drucker kopiert hat, fällt auf, dass dieser nicht unbedingt direkt zu sehen ist. In diesem Fall ist dieser Artikel interessant: http://newyear2006.wordpress.com/2014/07/09/gruppierung-bei-windows-druckern-aufheben/

Leider werden bei obiger Methode noch nicht die Einstellungen des zu kopierenden Druckers mitübertragen. D. h. die Kopie des Druckers hat immer die Standardeinstellungen, wie nach einer Neuinstallation des Druckertreibers. Dazu aber ein anderes Mal mehr…

SBS2003 Server machte nach Internetproviderumstellung Probleme mit DNS-Namensauflösungsanfragen

2 August 2014

Nachdem bei einem Kunden der Internetprovider gewechselt wurde, kam es zu massiven Problemen bei den Clientrechnern. Bei Zugriffen, vor allem auf kompliziertere oder mittels HTTPS verschlüsselten Seiten wie bahn.de, ebay.de, mobile.de usw. gab es teilweise ewige Verzögerungen und am Ende sogar Timeouts, so dass die Seiten nicht korrekt dargestellt wurden.

Der SBS hat bekanntlich noch zwei Netzwerkkarten. Davon wird eine für den lokalen Netzwerkverkehr verwendet und die zweite ist das Gateway nach außen. Der neue Internetprovider hatte ein Gerät installiert, wo ein anderer IP-Adressbereich hinterlegt war. Demzufolge musste beim SBS in den Netzwerkkarteneinstellungen die neue IP-Adresse für die Kommunikation mit dem externen Router hinterlegt werden. Damit fingen die Probleme an.

Am SBS-Server war ein gewohnt schneller Zugriff auf alle Seiten möglich. Allerdings war auf den Clientrechnern eben obige Aussetzer zu beobachten. Auch ein Test mit Googles-DNS-Server-Adresse 8.8.8.8 auf dem Client brachte die übliche Geschwindigkeit. Was tun? Zunächst mittels Ping und NSlookUp versucht der Sache auf die schliche zu kommen. Nach vielen Tests und einigem hin- und her hatte es sich herausgestellt, dass am SBS noch ein DNS-Forward eingestellt werden sollte.

Mittels

dnscmd /info

kann man verschiedene Infos zum DNS abfragen:


  Aging Configuration:
        ScavengingInterval           = 0
        DefaultAgingState            = 0
        DefaultRefreshInterval       = 168
        DefaultNoRefreshInterval     = 168
  ServerAddresses:
Addr Count = 2
                Addr[0] => 192.168.60.1
                Addr[1] => 192.168.10.2
  ListenAddresses:
Addr Count = 1
                Addr[0] => 192.168.60.1
  Forwarders:
Addr Count = 1
                Addr[0] => 192.168.1.1
        forward timeout  = 5
        slave            = 0
Command completed successfully.

Hier sieht man sehr schön, dass zwar die IP-Adresse der zweiten Netzwerkkarte Addr[1] passend zum neuen Router gesetzt wurde aber die Adresse Addr[0] des Forwarders noch auf den alten IP-Bereich eingestellt ist. Wichtig dabei ist nun auch der Timeout=5, was 5 Sekunden entspricht.

Wenn man es weiß, ist nun die Sache schnell erledigt:

dnscmd . /ResetForwarders 192.168.10.1 /TimeOut 5 /Slave

Damit wurde Addr[0] des Forwarders auf die korrekte Adresse.

Interessant an der Geschichte ist vor allem, dass Seiten mit Subdomains massive Probleme bekamen. Ist irgendwie logisch denn für jede Subdomainanfrage kam der Timeout mit 5 Sekunden zu tragen.

So führte ein einfacher Aufruf von ebay.de und das klicken auf Einloggen zu zig Domainabfragen, hier einige davon:

www.ebay.de
secureir.ebaystatic.com
ir.ebaystatic.com
securepics.ebaystatic.com
srx.de.ebayrtm.com
cors.api.paypal.com
thumbs2.ebaystatic.com
thumbs3.ebaystatic.com
thumbs4.ebaystatic.com
p.ebaystatic.com
www.paypalobjects.com
b.stats.ebay.com
314797b0qxk.stats.ebay.com
signin.ebay.de
phx.stats.paypal.com
src.ebay-us.com
sofe.ebay.de
rover.ebay.de
rtm.ebaystatic.com
pics.ebaystatic.com
secureir.ebaystatic.com
pages.ebay.de
i.ebayimg.com

Was für eine Auflistung! Über 20 DNS-Abfragen werden benötigt um die Start- und dann die Loginseite aufzurufen. Pech, wenn man sowas unterwegs in einem Edge- oder noch besser GPRS-Handynetz macht, wo jede Anfrage ca. 200 Millisekunden und mehr dauert…

Entfernen der Minianwendungen bei Windows 7

29 Juli 2014

Wenn man die Minianwendungen unter Windows 7 loswerden möchte, dann gibt es keine direkte offensichtliche Variante. Nein man muss sich in die “Windows-Funktionen aktivieren oder deaktivieren” begeben.

Hier eine Anleitung mit Bildern: http://tipps4you.de/tipp-14-win7.html.

Aber mit Adminrechten ausgestatet, geht es auch einfacher per Eingabeaufforderung:

dism /online /disable-feature /FeatureName:WindowsGadgetPlatform

Es startet dann

Tool zur Abbildverwaltung für die Bereitstellung
Version: 6.1.7600.16385

Abbildversion: 6.1.7601.18489

Funktionen werden deaktiviert
[==========================100.0%==========================]
Der Vorgang wurde erfolgreich beendet.
Zum Abschließen dieses Vorgangs muss Windows neu gestartet werden.
Möchten Sie den Computer jetzt neu starten (J/N)?

Nun ist man die Plattform zu Windows-Minianwendungen los.

Ereignisanzeige Protokollnamen für Powershell übersetzen

28 Juli 2014

Durch den vorhergehenden Blogeintrag http://newyear2006.wordpress.com/2014/07/28/windows-store-konnte-die-computerlizenzen-nicht-synchronisieren-ergebniscode-0x80070490/ bin ich wieder mal über ein Problem gestolpert, dem ich schon häufiger begegnet bin, deshalb dieses Mal fürs löchrige Gehirn etwas ausführlicher.

Es ging um ein Problem, welches in der Ereignisanzeige mit dem Protokollnamen "Microsoft-Windows-Store-Licensing/Admin" erfasst ist. Möchte man nun diesen Event per Powershell ermitteln, passiert folgendes:

PS>Get-WinEvent -LogName Microsoft-Windows-Store-Licensing/Admin
Get-WinEvent : Auf dem Computer "localhost" wurde kein Ereignisprotokoll gefunden, das
"Microsoft-Windows-Store-Licensing/Admin" entspricht.
In Zeile:1 Zeichen:1
+ Get-WinEvent -LogName Microsoft-Windows-Store-Licensing/Admin
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft-Windows-Store-Licensing/Admin:String) [Get-WinEvent], Excepti
   on
    + FullyQualifiedErrorId : NoMatchingLogsFound,Microsoft.PowerShell.Commands.GetWinEventCommand

Gut, vielleicht kann man es auch mit Anführungsstrichen probieren? Leider bringt dies auch nichts. Microsoft-Windows-Store-Licensing steht jetzt auch nicht im Verdacht in der falschen Sprache angegeben zu sein oder?

Nächster Versuch, man könnte ja alles mit Namen *Licen* auflisten lassen:

PS> Get-WinEvent -ListProvider *licen*

Name     : Microsoft-Windows-Kernel-LicensingSqm
LogLinks : {}
Opcodes  : {}
Tasks    : {}

Name     : Microsoft-WS-Licensing
LogLinks : {Microsoft-WS-Licensing/Diagnostic, Microsoft-WS-Licensing/Debug, Microsoft-WS-Licensing/Admin}
Opcodes  : {win:Start, win:Stop}
Tasks    : {Service_Init, Service_Stop, Service_Init_LicenseStore, Service_Init_HwidCollect…}

Name     : Microsoft-Windows-Kernel-Licensing-StartServiceTrigger
LogLinks : {}
Opcodes  : {}
Tasks    : {}

Sieht auch nicht sehr ergiebig aus. Wobei Microsoft-WS-Licensing geht ja in die Richtung, wenn WS für Windows Store stehen würde:

PS > (Get-WinEvent -ListProvider *licen*).Loglinks

LogName                          IsImported DisplayNam
——-                           ———- ———
Microsoft-WS-Licensing/Diagnostic      False
Microsoft-WS-Licensing/Debug           False
Microsoft-WS-Licensing/Admin           False

OK, es ist kein Displayname eingetragen, also wird es das auch nicht sein. Oder vielleicht doch? Ich bin ja immer noch der Meinung, WS steht für Windows Store. Da Powershell teilweise immer etwas Daten vor einem verheimlicht, lasse ich mir alle Daten zu einem Objekt ausgeben:

Get-WinEvent -ListProvider *licen*| fl *

Siehe da, hier gibt es auch ein Displayname Feld. Also mal dieses ausgeben lassen:

PS> (Get-WinEvent -ListProvider *licen*).displayname
Microsoft-Windows-Store-Licensing
Microsoft-Windows-LicensingStartServiceTrigger

Ah da isses ja. Der gesuchte Microsoft-Windows-Store-Licensing-Protokollname. Deutlicher wird es damit:

PS C:\Windows\system32> (Get-WinEvent -ListProvider *licen*)| select displayname, providername| fl

DisplayName  :
ProviderName : Microsoft-Windows-Kernel-LicensingSqm

DisplayName  : Microsoft-Windows-Store-Licensing
ProviderName : Microsoft-WS-Licensing

DisplayName  : Microsoft-Windows-LicensingStartServiceTrigger
ProviderName : Microsoft-Windows-Kernel-Licensing-StartServiceTrigger

Es geht halt nichts über eine ordentliche Übersetzung! Übrigens wäre es auch noch einfacher gegangen. Einmal über die GUI-Methode, indem man beim betreffenden Protokolleintrag sich die Details anzeigen lässt und dann System erweitert. Dort taucht dann unter Provider ebenso wieder “Microsoft-WS-Licensing” auf.

Man kann nun also mittels

Get-WinEvent -LogName Microsoft-WS-Licensing/Admin -MaxEvents 10

eine schöne Auflistung der Fehler erhalten.

Windows Store konnte die Computerlizenzen nicht synchronisieren. Ergebniscode: 0x80070490

28 Juli 2014

Weil es so schön ist und auch diese Meldung einem regelmäßig in den Eventlogs der Windows 8.1-Rechner entgegenfliegt:

Windows Store konnte die Computerlizenzen nicht synchronisieren. Ergebniscode: 0x80070490

Eingeführt mit dem Update auf Windows 8.1 erscheint diese Meldung jeden Tag einmal. Die Ereginis-ID lautet 512 und die Quelle ist Store-Licensing.

Klickt man den Onlinehilfelink an, erscheint:

image

Man beachte 9871 von 39506 Leute fanden diese Seite gut!

Microsoft hat im Zuge der Nokiaübernahme gerade 18000 Leute entlassen, davon sind auch mehrere tausend Microsoftmitarbeiter betroffen, hier einer davon: https://www.youtube.com/watch?v=lRV6PXB6QLk. Der Mann im Video stellt sich die berechtige Frage, wie man Windows am Laufen halten möchte? Die letzten Jahre mangelt es bereits an Dokumentation und vor allem an Supportdokumenten und dann hauen die auch noch zig tausend Leute raus. Die hätten besser die Leute behalten und zu 12 Monaten Zwangsdokumentation schreiben und Bugfixing verdonnern sollen.

Aber zurück zum Thema. Über diesen Thread bin ich an den passenden Eintrag gekommen: http://www.eightforums.com/general-support/50300-windows-store-failed-sync-machine-licenses-0x80070490.html. Wie so oft gibt es ja keinen offiziellen Knowledge Base Eintrag dazu. Wozu fehlende Dokumentation und unnütze Fehler  führen können, zeigt sich an diesem Thread: http://answers.microsoft.com/en-us/windows/forum/windows8_1-windows_store/w81-update-1-windows-store-failed-to-sync-machine/2ea6a4b8-c50c-444f-a4ef-f7ee7705f1ae.

Also nun mittels Powershell mal wieder rumgebastelt und die These überprüft. Wenn man diesen Befehl eingibt:

Get-ScheduledTask WSRefreshBannedAppsListTask | Start-ScheduledTask

Dann wird der betreffende Task erneut gestartet. In diesem Fall wird wieder der Eventeintrag generiert, diesen kann man nun mittels

Get-WinEvent -LogName "Microsoft-WS-Licensing/Admin" -MaxEvents 1| select id,timecreated,message | fl

abfragen und erhält:

Id          : 512
TimeCreated : 28.07.2014 16:33:36
Message     : Windows Store konnte die Computerlizenzen nicht synchronisieren. Ergebniscode: 0x80070490

Um also die nervige Protokollierung der Fehlereinträge aus den Eventlogs weg zu bekommen, ruft man

Get-ScheduledTask WSRefreshBannedAppsListTask | Disable-ScheduledTask

auf. Damit wird der Dienst deaktiviert.

Da leider keine Dokumentation verfügbar ist, was die Aufgabe des Tasks genau ist, ist die Frage, ob man sich durch das Deaktivieren irgendwelche Negativeffekte einhandelt. Die Zeit wird es zeigen…


Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.