Ich hatte ja im vorherigen Post über drei "Fehler" berichtet, die in einer
Virtuellen Maschine mit Server 2022 Build 20348 aufgetreten sind.
Gereizt hat es mich dann doch die Fehler auszubügeln und die Skripte konsistenter zu machen.
1. Virenscanner-Erfassung
Der Virenscanner in Windows Server kann nicht über die CIM-Instance erfasst werden.
Die CIM-Instance erhielt dann noch die Erweiterung -ErrorAction SilentlyContinue,
so dass diese wenigstens ohne Fehlermeldungen auszugeben, weiter läuft.
Deshalb habe ich mir bei Server Betriebssystemen anders beholfen.
Wenn das Betriebssystem im Namen Server drin hat und ein gewisser Dienst mit Namen
Windows Defender Advanced Threat Protection vorhanden ist, dann Virenscanner = "Windows Defender"
Die Weitere Erfassung funktioniert dann wie gewohnt (Letztes Update, Schnellüberprüfung usw.)
Wie im Skript bisher auch, wird ein anderer Dritt-Anbieter Virenscanner nur mit seinem Namen erfasst! Mehr nicht.
Code:
# ___________________________________________________ Neuer Abschnitt für Server_______________________________________________________
# Wenn kein Virenscanner gefunden wird, setze auf Windows Defender
if ($Mein_Betriebssystem -like "*Server*" ) {
$virus_dienst= get-service | where {$_.DisplayName -Like "Windows Defender Advanced Threat Protection*"}
if ($Mein_Betriebssystem -like "*Server*" -and ($virus_dienst)) {
$antivirusName = "Windows Defender"
$antivirusProducts = "Windows Defender"
$antivirusProduct = "Windows Defender" }
}
# ___________________________________________________ Neuer Abschnitt für Server_______________________________________________________
if (-not $antivirusProducts -or -not (Test-Path $FilepathSecurityhealthHost) -or -not (Test-Path $FilepathSecurityhealthservice)) {
write-host
Write-Host ${blink}"Es wurde kein installierter Virenscanner gefunden!"${blinken_ende}
Write-Host
write-host
return
}
if ($Mein_Betriebssystem -notlike "*Server*") {
# Nimm den ersten gefundenen Virenscanner
$antivirusProduct = $antivirusProducts[0]
$antivirusName = $antivirusProduct.displayName}
2. CPU-Last
Bisher war es so, dass der Wert der CPU-Last immer gerundet wurde. So habe ich das jetzt gemacht und es funktioniert!
Code:
$cpuLoad = (Get-CimInstance -Class Win32_Processor).LoadPercentage
if ($cpuload -gt "1") {
$roundedCpuLoad = [math]::Round($cpuLoad, 2)} else {$roundedCpuLoad = "0"}
Klingt einleuchtend... Nur wenn die CPU-Last größer 1 ist, dann erst soll der Wert gerundet werden.
Vorher ist das Schwachsinn und daher kam in der Virtuellen Maschine auch die Fehlermeldung zu Stande.
3. CPU-Kerne
Da war das Ganze schon etwas komplizierter.
In einer Virtuellen Maschine werden die CPU-Kerne anders erfasst, als in einer realen Maschine.
Jeder Kern wird einzeln behandelt und es wird dann für jeden Kern einzeln der Name und die Taktfrequenz ausgegeben.
Dann habe ich alle Namen in einer Zeile und alle Taktfrequenzen in einer Zeile stehen.
Das ist aber so, in meinen Skripten zumindest, nicht erwünscht.
Es reicht dann ein erfasster Prozessorname und eine erfasste Taktfrequenz.
Sonst hätte ich eine ForEach-Schleife bauen müssen.
Jetzt wird nur von dem ersten CPU-Kern der Name und die Taktfrequenz erfasst.
Die Erfassung der physischen und logischen Prozessorkerne bleibt davon unberührt.
Einen Vierten Fehler, der aber nichts mit Server Betriebssystemen oder Virtuellen Maschinen zu tun hat,
habe ich auch noch im Bereich USB 3.0 Controller oder höher entdeckt.
Es stand bei einem Freund NVidia Audio Wave Table blablabla mit als USB 3.0 Controller mit drin.
Also habe ich den Filter um $_.Description -notlike "*Audio*" erweitert und zack Ruhe wars.
Ist ja auch schwachsinnig, wenn bei den zu erfassenden USB 3.0 Controllern (oder höher) und um die geht es ja in diesem Abschnitt nur, plötzlich ein Teil einer Soundkarte mit auftaucht!
Die Schnelltest-Skripte sind diesmal sehr umfangreich.
Prozessor_RAM_Erfassung_blauweiss.ps1 und
Prozessor_RAM_Erfassung_bunt.ps1 und
Test_CPU_Load_blauweiss.ps1 und
Test_CPU_Load_bunt.ps1 und
Test_Virenscanner_Erfassung_blau_weiss.ps1 und
Test_Virenscanner_Erfassung_bunt.ps1 und
USB_3_Mobile_Erfassung_blauweiss.ps1 und
USB_3_Mobile_Erfassung_blunt.ps1
Selbstverständlich sind die "großen" Skripte ebenfalls fertig und angepasst!
Kleini der CPU Quäler:
Ich werde von nun an in die For_Normal_Users.zip die Datei CPU Burn-in.exe mit reinpacken.
Diese Datei ermöglicht es mit ihren nur 20 KB Größe die CPU zu belasten und mal richtig Traffic zu erzeugen.
Ich habe dann noch Drive Snapshot gestartet um von Laufwerk C: ein Abbild (Image) zu erstellen.
Daher kamen dann die 91 Prozent CPU-Last zu Stande.
Um 3.55 Uhr habe ich noch einige kosmetische Korrekturen vorgenommen.
Des Weiteren musste ich bei dem Virenscannerabschnitt die Logik nochmals geringfügig ändern.
Wenn noch nie ein Update oder ein Quickscan gestartet wurde, ist es wiedersinnig zu schreiben:
Es ist noch kein Update erforderlich bzw. Es ist noch kein Quickscan erforderlich... muhhhaaaaaa
Schade ... Auf dem Server 2022 bekomme ich TranslucentTB nicht mehr ans Laufen!
Trotz TTB_23_2.msixbundle Datei und richtigem DISM-Befehl...... Error 3
Aber das hier tröstet mich dann doch:
Und das auf dem Server auch: