Seit heute gibt es das große Update auf den Build 1809 für Windows 10.
Auch hier möchte ich zum Download des ISO auf diesen Artikel verweisen.
Enjoy it, b!
Seit heute gibt es das große Update auf den Build 1809 für Windows 10.
Auch hier möchte ich zum Download des ISO auf diesen Artikel verweisen.
Enjoy it, b!
Bald kommt das Herbstrelease von Windows 10 in der Version 1809. Dabei stellt sich die Frage, welche Buildnummer hat eigentlich mein Windows 10 System und wie bekomme ich diese am einfachsten heraus?
Auf meinem aktuellen System mit Windows 10, 1803 ist der Build 17134 …
c:\Temp> ver Microsoft Windows [Version 10.0.17134.286]
… und unter Windows 10, 1809 wird er dann 17663 sein.
C:\Temp> ver Microsoft Windows [Version 10.0.17763.1]
Da aber die Zukunft PowerShell heißt, können wir uns das dort noch viel schöner anzeigen lassen.
PS C:\Temp> [System.Environment]::OSVersion.Version
Windows 10, Build 17763, das Herbst-Release 2018.
Enjoy it, b!
Die Firmware von Intel Data Center SSDs auf einem Microsoft Hyper-V Server (oder auch Windows Server Core) kann über die Eingabeaufforderung (cmd.exe) mit den folgenden Schritten aktualisiert werden.
Herunterladen der aktuellen Firmware, auf einem PC mit Internet-Zugang:
https://downloadcenter.intel.com/de/download/27863/Intel-SSD-Data-Center-Tool?v=t
Entpacken des Intel SSD Data Center Tools vom PC auf den Microsoft Hyper-V Host (unter der Voraussetzung, dass die entsprechenden Berechtigungen existieren).
unzip \Users\<Username>\Downloads\Intel_SSD_Data_Center_Tool_3.0.13_Windows.zip -d \\<Hyper-V-Hostname>\c$\temp\intel-ssd
Ich habe auf allen meinen PCs unzip.exe über ein Batchscript im Pfad liegen, um an der Eingabeaufforderung schnell eine Datei entpacken zu können. Alternativ geht das natürlich auch mit PowerShell.exe ab Windows 10 oder Windows Server 2016 mit Expand-Archive:
Expand-Archive -LiteralPath C:\Users\<Username>\DownloadsIntel_SSD_Data_Center_Tool_3.0.13_Windows.zip -DestinationPath '\\<Hyper-V-Hostname>\c$\temp\intel-ssd\' -Force
Wurde das Intel SSD Data Center Tools auf den Host entpackt, wechseln wir in einer RDP Session auf diesen, um das Update vor zu nehmen.
mstsc /f /v:<Hyper-V-Hostname>
Auf dem Hyper-V Host befindet sich im Verzeichnis C:\Temp\intel-ssd das Intel SSD Data Center Tool welches wir nun in der richtigen Version (x64) installieren müssen:
Wie so oft hat man bei Intel Software keine Möglichkeit das Zielverzeichnis zu beeinflussen und so haben wir hinterher auf Laufwerk C: im Root die folgenden Verzeichnisse:
Das ist zwar nicht schön, aber auch nicht schlimm
zum eigentlichen Update muss man ins ISDCT Verzeichnis wechseln:
C:\Temp\intel-ssd> cd \isdct
Dort befindet sich isdct.exe womit wir die Firmware der SSDs aktualisieren können, wozu die folgenden Schritte notwendig sind.
Für den Fall, dass die SSDs an einem AVAGO/LSI RAID Controller hängen, muss der folgende Befehl eingegeben werden.
isdct.exe set -system EnableLSIAdapter=true
Ohne diesen Aufruf, erkennt das Tool die SSDs nicht, oder nicht korrekt!
Mit den folgendem Aufruf, können die im System vorhandenen SSDs angezeigt werden, dabei analysiert auch gleich das Intel Data Center Tool ob ein Update der Firmware notwendig ist.
isdct.exe show –intelssd
Wichtig hier sind die folgenden Informationen:
Die eigentliche Aktualisierung erfolgt nun mit diesem Aufruf – Wichtig: Bis jetzt wurden nur Informationen der SSDs gelesen, die Aktualisierung ist ein Schreibvorgang (Stichwort Datenbackup) der laut Intel nicht destruktiv ist (also eigentlich nix passieren kann).
isdct.exe load -intelssd <Index>
Für den Fall, dass wir 4 SSDs (Index 0 bis 3) aktualisieren müssen kann auch das folgende Script verwendet werden.
@ECHO OFF FOR /L %%a IN (0,1,3) DO ( ECHO y | isdct.exe load –intelssd %%a )
Eine abschließende Analyse mit dem Intel SSD Data Center Tool zeigt, dass nun alle SSDs die aktuelle Firmware besitzen.
- Intel SSD DC S3520 Series PHDV723201YD480BGN - Bootloader : Property not found DevicePath : LSI10 DeviceStatus : Firmware : N2010121 FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release. Index : 0 ModelNumber : INTEL SSDSC2BB480G7 ProductFamily : Intel SSD DC S3520 Series SerialNumber : PHDV723201YD480BGN - Intel SSD DC S3520 Series PHDV723201K1480BGN - Bootloader : Property not found DevicePath : LSI5 DeviceStatus : Firmware : N2010121 FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release. Index : 1 ModelNumber : INTEL SSDSC2BB480G7 ProductFamily : Intel SSD DC S3520 Series SerialNumber : PHDV723201K1480BGN - Intel SSD DC S3520 Series PHDV717503PB480BGN - Bootloader : Property not found DevicePath : LSI6 DeviceStatus : Firmware : N2010121 FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release. Index : 2 ModelNumber : INTEL SSDSC2BB480G7 ProductFamily : Intel SSD DC S3520 Series SerialNumber : PHDV717503PB480BGN - Intel SSD DC S3520 Series PHDV717501MN480BGN - Bootloader : Property not found DevicePath : LSI7 DeviceStatus : Firmware : N2010121 FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release. Index : 3 ModelNumber : INTEL SSDSC2BB480G7 ProductFamily : Intel SSD DC S3520 Series SerialNumber : PHDV717501MN480BGN
So, nun sind wir fertig … den Server noch Rebooten und das war es dann.
Enjoy it, b!
Beim letztem Patchday musste ich feststellen, dass ein Windows Server 2016, der als VM auf einem Hyper-V Host lief, keinen Shutdown oder Reboot durchführen konnte. Die VM blieb einfach hängen.
Meine erste Vermutung war ein Problem mit dem Pagefile beim Shutdown und so schaute ich mir die Konfiguration des Servers an.
Gemäß der Standard-Einstellung hat sich das Betriebssystem dazu entschieden, dass Pagefile auf Laufwerk D: zu legen. Nach Änderung auf Laufwerk C: (wie im folgendem Bild zu sehen) konnte die VM problemlos herunterfahren oder auch durchstarten.
Sollte ich Zeit haben, muss ich mir die Sache genauer anschauen. Aber der Workaround oben hat schon einmal geholfen.
Enjoy it, b!
Im Büro oder Zuhause gibt es oftmals Geräte welche ihren Status per E-Mail versenden können, dazu gehören unter anderem RAID-Controller, die USV aber auch Multifunktionsgeräte (wie zum Beispiel das Lexmark X544). Das Problem, besonders bei älteren Geräten ist, dass diese oftmals keine verschlüsselten E-Mails versenden können, oder der Konfigurationsdialog nur einen Mail-Server zulässt der mit geringer oder gar keiner Authentifizierung Mails versenden kann. So eine Konfiguration ist über das Internet nicht sinnvoll und sogar fahrlässig, bzw. wird von den Providern gar nicht angeboten.
Die Lösung für ein solches Szenario stellt ein interner Mail-Server dar, der zum einen aus dem Internet nicht erreichbar ist und intern, also im Heimnetz, E-Mails ohne Anmeldung entgegennimmt und diese über den Provider versendet. Ein internes SMTP-Relay. Unter Windows verwendet man hier den integrierten SMTP-Server, betreibt man stattdessen ein NAS Zuhause, muss auf einen dort vorhandenen SMTP-Server zurück greifen.
Für die Synology NAS Geräte gibt es einen Mail Server (letztendlich ist das Postfix) welchen ich für die Weiterleitung über einen 1&1 Mail-Account konfiguriert habe. Dazu waren die folgenden Schritte notwendig.
Als erstes muss der Mail Server über das Synology Package Center installiert werden und danach werden die Einstellungen des Mail Server mit Open geöffnet.
Im Tap SMTP habe ich dazu die folgenden Einstellungen gesetzt, mit der Einstellung im roten Kasten schafft es auch mein betagter Lexmark X544dn Mails über die Synology zu versenden.
Im nächsten Schritt muss der 1&1 E-Mail-Account für das SMTP Replay konfiguriert werden.
1&1 bietet an, die Kommunikation zu verschlüsseln was natürlich sinnvoll ist. Daher Port 587 und TLS, sowie die Anmeldedaten aus Mail-Adresse und Passwort.
Wichtig bei 1&1 ist es, dass die Mails von dem konfiguriertem Account oder einer anderen gültigen Mail-Domain verendet werden. Eine Konfiguration wie mit vielen anderen Providern, zum Beispiel x544@home.local oder fax@home.local als Absender habe ich nicht hinbekommen. Ich musste dann am Lexmark MFC device@gültige.domain als Absender eintragen.
Das Tap IMAP/POP3 bleibt leer (hier nichts anhaken), darüber hinaus habe ich Security ebenfalls im Default (leer) gelassen.
Da auf der Synology der User bernd-xxx als Admin “mail-enabled” ist, habe ich einen Alias (Tap Alias) angelegt welcher die Mails an eine externe Mail-Adresse weiter leitet.
Zum Abschluss fehlt noch das Reporting, was den nun an Mails versendet wird. Hierzu sind im Tap Report die folgenden Einstellungen notwendig.
So, nun klappt das Versenden von meinem Lexmark MFC ohne Probleme.
Enjoy it, b!
Für einen aufwendigeren Test hatte ich mir unter Hyper-V eine Linux VM (Generation 2 mit CentOS 7.4) konfiguriert, mit der Absicht deren Disk für eine Reihe weiterer VMs zu verwenden … analog zum SysPrep von Windows.
Der Boot einer neuen VM mit der kopierten Linux VHDX ging aber sofort, mit der folgenden Meldung daneben.
Die Lösung des Problems ist, wenn man die notwendigen Schritte kennt nicht sonderlich schwer. Eigentlich haben wir ein Problem mit dem Bootloader von Linux.
Im ersten Schritt schalten wir die VM über das Hyper-V Management aus und fügen im Anschluss (wenn die VM aus ist) ein Linux ISO hinzu. Danach verändern die Boot Reihenfolge so, dass die VM von der DVD (sprich dem ISO Image startet).
Die Änderung erfolgt unter Change Hardware/Firmware/Boot order im Hyper-V Management und sollte das DVD-Laufwerk an erster Stelle haben.
Nun wird die VM wieder eingeschaltet und es erfolgt ein Boot von der DVD. Innerhalb des Boot-Menüs erfolgt dann die Auswahl Select Troubleshooting / Rescue a CentOS system.
Linux erkennt nun die vorhandene Installation und mounted diese unter /mnt/sysimage
Damit liegt unser Boot-Verzeichnis unter /mnt/sysimage/boot/efi/EFI und wir können das mit Hilfe der folgenden Schritte reparieren.
# Wechsel in das EFI Verzeichniss
cd /mnt/sysimage/boot/efi/EFI
# "Weg-Kopieren" des Boot files
cp -r centos/ boot
# ODER ALTERNATIV bei Ubuntu
cp -r ubuntu/ boot
mv fbx64.efi grubx64.efi
Nun fahren wir das Linux System wieder runter …
shutdown
… schalten die VM aus und ändern erneut die Boot-Reihenfolge unter Change Hardware/Firmware/Boot order im Hyper-V Management damit nun die VHD an erster Stelle steht.
Damit startet mein CentOS ohne Probleme.
Enjoy it, b!
Nach der Installation der File Server Resource Managers (FSRM) Role hatte ich auf verschiedenen Servern das Problem, dass die MMC beim Versuch irgendwelche Einstellungen vor zu nehmen abgestürzt ist.
Im Application Eventlog fand ich dazu einen vom Zeitpunkt her korrelierenden Fehler, der mir so erstmal wenig gesagt hat.
Nach einiger Recherche bin ich auf folgende Lösung gestoßen, welche auf allen betroffenen Server das Problem behoben hat.
@echo off cd "%windir%\system32\wbem" mofcomp srm.mof net stop srmsvc net start srmsvc
Danach hat der FSRM ohne Probleme funktioniert und ich konnte die Konfiguration durchführen.
Enjoy it, b!
Hier mal wieder ein Beitrag zu meiner Lieblingstechnologie, dem WSUS.
Prinzipiell ermöglicht der WSUS die Nutzung einer Vielzahl von SQL Server Editionen, besonders häufig treffe ich auf die Installation des WSUS in Verbindung mit der SQL Server Express Edition. Diese Edition verwende ich (nicht zuletzt, weil sie nichts kostet) ebenfalls sehr gerne auch für andere Anwendungen. Allerdings muss man hier auf eine Kleinigkeit achten, eine Datenbank darf nicht größer als 10GB werden und damit kommen wir wieder zum WSUS. Die 10GB Grenze sprengt der WSUS bei einer Reihe meiner Installationen, bzw. bewegt sich knapp darüber. Nun stellt sich die Frage: Wie bekomme ich die WSUS Datenbank (die übrigens immer noch SUSDB heißt) wieder klein, also unter die 10GB Grenze.
Die Überschreitung dieser, kündigt sich übrigens auch im Application Eventlog des Servers an.
Ist die WSUS Datenbank größer als 10GB geworden, haben wir zwei Möglichkeiten. Wechsel der Datenbank Editon im Hintergrund (SQL Server Standard zum Beispiel) was aber mit Kosten verbunden ist oder versuchen die WSUS Datenbank zu verkleinern.
Dazu sind drei Schritte (mit möglichen Wiederholungen) notwendig.
Klingt eigentlich ganz einfach und das ist es eigentlich auch
Für das Entfernen von nicht mehr notwendigen Updates hat Microsoft den Server Cleanup Wizard in den WSUS integriert.
Der funktioniert auch gelegentlich, insofern man nicht gleiche alle Optionen auf einmal wählt. In letzter Zeit hatte ich häufig den Fall, dass sich der WSUS im Hintergrund beendet oder der Wizard selbst die gewählten Aufgaben nicht vollständig zu Ende bringen konnte. Einfacher und deshalb von mir bevorzugt finde ich das Durchführen der Bereinigung mit PowerShell.
Invoke-WsusServerCleanup -DeclineSupersededUpdates -DeclineExpiredUpdates -CleanupObsoleteComputers -CleanupObsoleteUpdates
Der Aufruf läuft zwar auch nicht auf Anhieb durch, kann aber im Falle einer Terminierung problemlos nochmals gestartet werden. Ich musste das auf einem Server 9x wiederholen, wichtig dabei ist das eine Bereinigung stattfinden nur leider nicht fertig wird. Ein wiederholter Aufruf (Pfeil Oben-Taste in der PowerShell Konsole) macht da weiter wo der Abbruch stattfand und kommt nach einigen Durchläufen zu einem positiven Ergebnis.
Der folgende Screenshot zeigt die letzten beiden Timeouts des Befehls (#7 und #8) und letztendlich die erfolgreiche Bereinigung (Obsolete Updates Deleted: 103).
Im nächsten Schritt müssen wir die SQL Datenbank des WSUS (SUSDB) einem Maintenance Task unterziehen.
Dafür verwenden wir in Script aus der Technet Gallery …
/****************************************************************************** This sample T-SQL script performs basic maintenance tasks on SUSDB 1. Identifies indexes that are fragmented and defragments them. For certain tables, a fill-factor is set in order to improve insert performance. Based on MSDN sample at http://msdn2.microsoft.com/en-us/library/ms188917.aspx and tailored for SUSDB requirements 2. Updates potentially out-of-date table statistics. ******************************************************************************/ USE SUSDB; GO SET NOCOUNT ON; -- Rebuild or reorganize indexes based on their fragmentation levels DECLARE @work_to_do TABLE ( objectid int , indexid int , pagedensity float , fragmentation float , numrows int ) DECLARE @objectid int; DECLARE @indexid int; DECLARE @schemaname nvarchar(130); DECLARE @objectname nvarchar(130); DECLARE @indexname nvarchar(130); DECLARE @numrows int DECLARE @density float; DECLARE @fragmentation float; DECLARE @command nvarchar(4000); DECLARE @fillfactorset bit DECLARE @numpages int -- Select indexes that need to be defragmented based on the following -- * Page density is low -- * External fragmentation is high in relation to index size PRINT 'Estimating fragmentation: Begin. ' + convert(nvarchar, getdate(), 121) INSERT @work_to_do SELECT f.object_id , index_id , avg_page_space_used_in_percent , avg_fragmentation_in_percent , record_count FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'SAMPLED') AS f WHERE (f.avg_page_space_used_in_percent < 85.0 and f.avg_page_space_used_in_percent/100.0 * page_count < page_count - 1) or (f.page_count > 50 and f.avg_fragmentation_in_percent > 15.0) or (f.page_count > 10 and f.avg_fragmentation_in_percent > 80.0) PRINT 'Number of indexes to rebuild: ' + cast(@@ROWCOUNT as nvarchar(20)) PRINT 'Estimating fragmentation: End. ' + convert(nvarchar, getdate(), 121) SELECT @numpages = sum(ps.used_page_count) FROM @work_to_do AS fi INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id -- Declare the cursor for the list of indexes to be processed. DECLARE curIndexes CURSOR FOR SELECT * FROM @work_to_do -- Open the cursor. OPEN curIndexes -- Loop through the indexes WHILE (1=1) BEGIN FETCH NEXT FROM curIndexes INTO @objectid, @indexid, @density, @fragmentation, @numrows; IF @@FETCH_STATUS < 0 BREAK; SELECT @objectname = QUOTENAME(o.name) , @schemaname = QUOTENAME(s.name) FROM sys.objects AS o INNER JOIN sys.schemas as s ON s.schema_id = o.schema_id WHERE o.object_id = @objectid; SELECT @indexname = QUOTENAME(name) , @fillfactorset = CASE fill_factor WHEN 0 THEN 0 ELSE 1 END FROM sys.indexes WHERE object_id = @objectid AND index_id = @indexid; IF ((@density BETWEEN 75.0 AND 85.0) AND @fillfactorset = 1) OR (@fragmentation < 30.0) SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE'; ELSE IF @numrows >= 5000 AND @fillfactorset = 0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD WITH (FILLFACTOR = 90)'; ELSE SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD'; PRINT convert(nvarchar, getdate(), 121) + N' Executing: ' + @command; EXEC (@command); PRINT convert(nvarchar, getdate(), 121) + N' Done.'; END -- Close and deallocate the cursor. CLOSE curIndexes; DEALLOCATE curIndexes; IF EXISTS (SELECT * FROM @work_to_do) BEGIN PRINT 'Estimated number of pages in fragmented indexes: ' + cast(@numpages as nvarchar(20)) SELECT @numpages = @numpages - sum(ps.used_page_count) FROM @work_to_do AS fi INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id PRINT 'Estimated number of pages freed: ' + cast(@numpages as nvarchar(20)) END GO --Update all statistics PRINT 'Updating all statistics.' + convert(nvarchar, getdate(), 121) EXEC sp_updatestats PRINT 'Done updating statistics.' + convert(nvarchar, getdate(), 121) GO
… das über das SQL Server Management Studio ausgeführt wird.
Einfach reinkopieren und (New Query) und mit Execute ausführen, dass Script selektiert die SUSDB gleich zu Anfang und beginnt die Indizes neu zu organisieren.
Nun kann die SUSDB verkleinert (Shrink) werden.
Dazu wählen wir im Object Explorer des Microsoft SQL Server Management Studios die SUSDB aus.
Danach mit der rechten Maustaste Tasks / Shrink / Database und klicken hier auf OK.
Wie im Screenshot zu sehen ist, hat die Datenbank auf einmal 64% freien Platz … was doch ganz ordentlich ist.
Wie alles beim WSUS dauert das verkleinern seine Zeit, danach haben wir aber das Problem für die nächste Zeit behoben.
Vorher:
08.05.2018 05:56 10.652.549.120 SUSDB.mdf
Nachher:
08.05.2018 06:16 3.385.720.832 SUSDB.mdf
Enjoy it, b!
Mit dem Update auf Windows 10 Build 1803 stand natürlich wieder die Frage im Raum “Was macht der Connector für den Windows Server Essentials”?
Im Gegensatz zu diesem und dem letztem https://sbsland.me/2018/03/01/windows-server-2012-essentials-connector-und-windows-10-upgrade/Blog zu dem Thema, nimmt die Anzahl der esoterischen Maßnahmen ab
Mir hat genau ein (1x) weiterer Reboot des aktualisierten Windows 10 PCs genügt und der Windows Server Essentials Connector hatte wieder eine Verbindung zum Server.
Klasse, dann geht das nämlich im Herbst gleich nach dem Neustart (so als Prognose).
Enjoy it, b!
Gelegentlich muss ich von einer Datei einen Hash erzeugen, um sie zum Beispiel im Virenscanner vom Zugriff aus zu nehmen.
Bisher oder früher hat man das recht einfach mit dem File Checksum Integrity Verifier Utility gemacht, welches Microsoft zum Download anbietet.
Der folgende Aufruf hat dann einen MD5 und SHA1 Hash erzeugt.
FCIV -md5 -sha1 path\filename.ext
Inzwischen gibt es seit PowerShell 4.0 (also auch schon einige Zeit) den Befehl Get-FileHash und damit die Möglichkeit einen Hash ganz ohne 3rd Party Tools oder Downloads zu erstellen.
PS C:\temp> Get-FileHash MEMORY.DMP -Algorithm SHA1
Enjoy it, b!