Die komplette kommende Woche halte ich wieder einmal eine C#-Schulung für einen Stammkunden. Immer noch remote. Das wird wohl noch einige Zeit so weiter gehen. Meine 2 Wochen in Hamburg im Oktober sind – soweit ich das bisher kommuniziert bekommen habe – auch schon wieder auf remote umgestellt. Es sieht so aus als würde ich dieses Jahr komplett online schulen (von der Einzelschulung über 3 Tage im Mai in meinen eigenen Räumen in Eppstein abgesehen).
Schlagwort: C#
Update Windows 10 aus der Konsole
Die regelmäßige Aktualisierung von Windows empfinde ich weitgehend als eine Katastrophe. Entweder aktualisiert sich Windows zum unpassenden Zeitpunkt (hatte ich gerade bei einem Kunden, bei dem das erzwungene Update während der Remoteschulung die Teilnehmer ziemlich blockiert hat) oder man deaktiviert das automatische Aktualisieren und dann ist man Out-Of bzw. die Geschichte lässt sich u:u: nicht wieder anschalten oder man sucht sich einen Zeitplan raus, von dem man vermutet, dass die Aktualisierungen nicht irgendwas anderes verhindern. Alles nicht wirklich der Bringer.
Auf meinen drei im Business-Einsatz genutzten Windows-10-Rechnern funktioniert das Windows-Update eigentlich nur auf meiner Workstation ohne großes Eingreifen. Und das auch nicht perfekt.
Auf meinem alten Terra-Notebook kann ich auf wuauserv gar nicht zugreifen. Ich bekomme immer einen Zugriffsfehler, wenn ich den Service starten will. Ich habe schon zig Wege versucht, aber alles ist bisher schief gelaufen (und selbstverständlich habe ich im Administrator-Modus gearbeitet). Auf dem Rechner bin ich mittlerweile mit einem Updates auf einem Stand von Anodazumal :-(. Was mich aber auch nicht extrem beunruhigt, da das Notebook schon mindestens 7 – 8 Jahre auf dem Buckel hat und nur durch ein Schnäppchen einer riesigen Notebook-SSD vor 2 Jahren vom kompletten Ausmustern gerettet wurde. Das Gerät ist wirklich nur noch mein Backup – sowohl als PC als auch Datenbackup vom NAS. Also Backup vom Backup. Dennoch – irgendwie will ich auch da mal ein Update hinbekommen. Ich spiele schon eine ganze Weile in der Powershell und mit net hin und her, aber bisher scheitert alles an den Zugriffsproblemen auf wuauserv.
Noch blöder ist es, dass ich auf meinem aktuellen Huawei-Matebook nur Windows Home mitgeliefert bekommen habe. Eine wirklich armselige Windows-Version (ja – me culpa – ich hätte ja schon auf die Pro-Version umsteigen können, aber bisher hatte ich noch keinen zwingenden Grund gesehen). Da hat man ja so gut wie keine Kontrolle über die Updates. Nicht einmal in den Einstellungen lässt sich der Dialog öffnen (warum auch immer). Ich bin bisher nicht einmal so ganz im Klaren gewesen, ob und welche Updates da installiert waren.
Aber da habe ich jetzt eine sinnvolle Lösung gefunden, um mit NuGet oder in der PowerShell Updates zu dem Zeitpunkt und dem von mir gewünschten Umfang zu erzwingen, wenn ich das will. Da ich die nächsten Wochen ein paar Remote-Schulungen zu C# halten werde, wollte ich vorher sowieso Visual Studio auf den neusten Stand bringen und dabei gleich NuGet ebenso. Und damit kann man dann auch Windows Updates komplett erzwingen. Schön in der Paket Manager-Konsole statt der grafischen, klebrigen Micky-Mouse-Oberfläche der PC Einstellungen. Oder man nutzt eben die PowerShell. Beides natürlich im Administrator-Modus.
Und das geht über die PowerShell so, dass man entweder PSWindowsUpdate oder WindowsUpdateProvider (Install-WUUpdates) verwendet. PSWindowsUpdate soll angeblich gegenüber des von Microsoft bereitgestellten PowerShell-Moduls Install-WUUpdates / Start-WUScan einige Vorteile bringen, aber da bin ich auf Hörensagen angewiesen.
Mit
Get-Command -Module WindowsUpdateProvider
findet man aber erst einmal heraus, welche Windows-Update-Provider auf einem PC verfügbar sind. Damit sieht man dann in etwa so etwas:
PS C:\WINDOWS\system32> Get-Command -Module WindowsUpdateProvider
CommandType Name Version Source
———– —- ——- ——
Function Get-WUAVersion 1.0.0.2 WindowsUpdateProvider
Function Get-WUIsPendingReboot 1.0.0.2 WindowsUpdateProvider
Function Get-WULastInstallationDate 1.0.0.2 WindowsUpdateProvider
Function Get-WULastScanSuccessDate 1.0.0.2 WindowsUpdateProvider
Function Install-WUUpdates 1.0.0.2 WindowsUpdateProvider
Function Start-WUScan 1.0.0.2 WindowsUpdateProvider
Sobald ein ausreichend neuer Build vorhanden ist, kann man dann Updates suchen und installieren (Updates für Windows und andere Microsoft-Produkte):
$Updates = Start-WUScan -SearchCriteria „IsInstalled=0 AND IsHidden=0 AND IsAssigned=1“
Write-Host „Updates gefunden: “ $Updates.Count
Install-WUUpdates -Updates $Updates
Ein anderer Weg führt eben über das PSWindowsUpdate-Modul, das so aus der PowerShell installiert werden kann (oder man nutzt einfach Visual Studio und da dann die Paket-Manger Konsole):
Install-Module -Name PSWindowsUpdate -Force
Danach kann man nach der Version schauen:
Get-Package -Name PSWindowsUpdate
Aber das passende NuGet-Version muss dabei vorhanden sein, wobei die auch bei Bedarf nachinstalliert wird. Die Ausgabe wird so etwas sein:
Name Version Source ProviderName
—- ——- —— ————
PSWindowsUpdate 2.2.0.2 https://www.powershellgallery… PowerShellGet
Für den nächsten Schritt sollten die Ausführungsrichtlinien für den aktuellen Prozess auf uneingeschränkt gesetzt werden:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
Und dann holt man die verfügbaren Updates so:
Get-WindowsUpdate -MicrosoftUpdate -Verbose
Die Installation von allem ohne weitere Rückfrage geht dann so:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
Soweit habe ich die Sache mit meinem Matebook auch schon erfolgreich durchgespielt und jetzt werde ich mir das Terra-Notebook und auch die Workstation vornehmen und mal sehen, was ich da aktualisieren kann oder auch nicht.
Wenn das alles nicht hilft, werde ich nochmal den folgenden Tipp in der Admin-Konsole versuchen:
net stop wuauserv
net stop bits
cd %systemroot%
ren SoftwareDistribution SoftwareDistribution.bak
net start bits
net start wuauserv
Ich habe zwar wenig Hoffnung, dass die Geschichte insbesondere bei den Zugriffsproblemen auf wuauserv was hilft, aber vielleicht nutzt die Schrittfolge ja jemand anderem oder in einer anderen Konstellation beim Update.
Das Ende von Visual Basic
Es ist vielleicht etwas drastisch formuliert, aber VB hat fertig. Schon seit Jahren hat Microsoft immer wieder angekündigt, bei .NET nur noch auf C# und C/C++ zu setzen. Jetzt ist es amtlich, dass die letzten Neuerungen für VB mit .NET 5 kommen. Dann wird der Versionsstand eingefroren.
Was aber nicht heisst, dass man in absehbarer Zeit VB-Programme los ist bzw. nicht mehr mit VB programmieren wird. Das Beispiel Cobol zeigt es! Seit 30 Jahren totgesagt und – zumindest bei Banken und Versicherungen – immer noch stark im Betrieb.
Ein bisschen unter den Tisch fällt die Zukunft von F#. Denn auch hier hat Microsoft das Interesse verloren, wobei man zugeben muss (auch wenn ich dazu ein Videotraining veröffentlicht habe), dass diese Sprache von Anfang an ein Nischendasein geführt hat.