Jump to content

Batch Datei bei bestimmter Windows Version beenden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

wir setzen zur Software und Updateverteilung Kaspersky SC11 ein.

Leider musste ich feststellen, das hierüber keine Windows 10 Funktionsupdates installiert werden können (1903/1909 etc.)

 

Nun habe ich mir die Windows 10 ISO Datei heruntergeladen und in einem Share entpackt. Über ein Batchdatei kann ich die Verknüpfung der Setup.exe auch mit gewissen Parametern ohne Probleme starten (/quiet /auto upgrade...) und die Installation wird im Hintergrund durchgeführt.

 

Ich würde nun gerne in die Batch noch eine Windows Versionsabfrage einbauen, so das die Batch Datei bei der Version 10.0.18363 beendet wird und das Setup nicht ausgeführt wird.

Über folgenden Befehl bekomme ich die Version angezeigt, leider weiß ich nicht wie ich diesen so einbauen kann, das meine gewünschte Funktion damit realisiert wird.

wmic os get version

 

Ich bedanke mich jetzt schon mal und hoffe das mir jemand helfen kann.

 

Gruß 

 

Link zu diesem Kommentar
vor 2 Stunden schrieb Micha81:

Ich würde nun gerne in die Batch noch eine Windows Versionsabfrage einbauen, so das die Batch Datei bei der Version 10.0.18363 beendet wird und das Setup nicht ausgeführt wird.

Mit einer Batch kann ich Dir nicht weiterhelfen. Viel einfacher geht das mit der Powershell. Füllen musst du die Variablen noch.

 

Das Skript frägt die Betriebssystemversion ab und wenn die Version kleiner als 1909 ist, dann wird der Upgrade-Prozess durchgeführt.

[string]$SetupPath = 'Hier kommt der UNC-Pfad zu der Setup-Datei herein'
[string]$SetupArgs = 'Hier kommen die Argumente /upgrade etc. herein'

[int]$CurrentOsVersion = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name ReleaseID -ErrorAction SilentlyContinue).ReleaseId

if ($CurrentOsVersion -lt 1909)
{
  # Start Upgrade
  Start-Process -FilePath $SetupPath -ArgumentList $SetupArgs -Verb RunAs -Wait
}

 

Link zu diesem Kommentar

Moin,

 

man behalte dabei im Auge, dass diese Fassung nur exakt den einen String prüft. Das ist hier die Aufgabe, dann ist das okay. Das wird aber scheitern (oder zumindest viel umständlicher werden), wenn sich die Aufgabe ändert. Spätestens dann sind die Mittel der PowerShell deutlich überlegen.

 

Dabei allerdings sollte man auch aufpassen: Der Weg, das über die Registry auszulesen, hat auch so seine Tücken. Da kommt dann ein String raus ... da können numerische Vergleiche fehlschlagen. Und es ist auch nicht gesagt, dass der Registrywert dauerhaft das ausgibt, was man davon erwartet. Gerade bei Windows-Versionsnummern hat Microsoft da schon eine ganze Menge an Permutationen durch.

 

[Windows und der Fluch der Versionsnummer | faq-o-matic.net]
https://www.faq-o-matic.net/2015/05/18/windows-und-der-fluch-der-versionsnummer/

 

Zu dem Thema aufschlussreich ist ein Blick auf ein verwandtes Thema: In Hyper-V gibt es eine Schnittstelle, um die Version der Integrationsdienste einer VM auszulesen (per (Get-VM <Name>).IntegrationServicesVersion) ). Seit Windows 2016 gibt diese aber immer 0.0 zurück, und eine neue Methode gibt es schlicht nicht.

 

Gruß, Nils

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...