Hallo zusammen,
ich habe eine Paket zum aktualisieren der Nvidia-Treiber unserer PCs erstellt.
Sollte es in Zukunft PCs mit neueren Treibern geben, möchte ich natürlich nicht, dass dieses Paket dort installiert wird.
Um das zu verhindern, wollte ich folgendes einstellen:
In den Paketeigenschaften --> Bedingungen --> Erweitert --> Bereits installiert:
WMI Abfrage: Get-WmiObject -Query 'SELECT DriverVersion FROM Win32_VideoController where Caption like "NVIDIA%"
Operator: Größer als oder gleich
Wert: 31.0.15.3770
Leider wird das Paket trotzdem installiert.
Stelle ich den Operator auf "gleich" wird das Paket nicht installiert und im Log steht wie gewünscht "Preconditions failed".
Ich vermute, dass "Größer als oder gleich" nur Zahlen vergleichen kann und das Problem durch die Punkte verursacht wird.
Kann das jemand bestätigen oder hat sogar eine Lösung bzw. Workaround?
Mit freundlichen Grüßen
Gladop
WMI Abfrage einer Treiber Version "Größer als oder gleich"
Moderators: MVogt, moderators
Re: WMI Abfrage einer Treiber Version "Größer als oder gleich"
Moin
ich habe nie mit den Bedingungen gearbeitet, da ich es übersichtlicher finde möglichst alles im Paket selber abzufangen. Deshalb sorry wenn ich da jetzt was falsch deute...
Wenn ich das richtig verstehe ist dies doch eine Bedingung FÜR eine Installation, die also erfüllt sein muss, damit das Paket installiert. Müsste der Operator dann nicht "kleiner als" sein?
ich habe nie mit den Bedingungen gearbeitet, da ich es übersichtlicher finde möglichst alles im Paket selber abzufangen. Deshalb sorry wenn ich da jetzt was falsch deute...
Wenn ich das richtig verstehe ist dies doch eine Bedingung FÜR eine Installation, die also erfüllt sein muss, damit das Paket installiert. Müsste der Operator dann nicht "kleiner als" sein?
Re: WMI Abfrage einer Treiber Version "Größer als oder gleich"
Moin 
hatte das gleiche Problem, habe jetzt einmal genau nachgelesen und wenn ich das richtig verstanden habe, dann sollst du dich nur auf die Major & die Minor Version beziehen, das kann er dann auch vergleichen, in deinem Fall dann 31.0
Grüße

hatte das gleiche Problem, habe jetzt einmal genau nachgelesen und wenn ich das richtig verstanden habe, dann sollst du dich nur auf die Major & die Minor Version beziehen, das kann er dann auch vergleichen, in deinem Fall dann 31.0
Grüße
Re: WMI Abfrage einer Treiber Version "Größer als oder gleich"
Moin zusammen,
ich hab das Projekt jetzt endlich wieder aufnehmen können.
Bisher hatten wir einfach eine Zuweisungsgruppe mit allen PCs, die diesen Treiber erhalten sollten.
@SRO
Die WMI Abfrage habe ich unter dem Reiter "Bereits installiert" erstellt.
Sprich Ist die Version größer als oder gleich installiere das Paket nicht, da es bereits installiert ist.
@matzef
Leider kann ich mit WMI nur die ganze Version auslesen.
Anders als bei SQL kann ich in der Abfrage nicht das Ergebnis bearbeiten.
Ich habe es jetzt wie folgt gelöst.
Mittels WMI Abfrage unter den Vorbedingungen wird überprüft ob in dem Computer eine unterstützte Grafikkarte steck.
(Welche Karten unterstützt werden, steht in der ListDevices.txt wenn der Treiber entpackt wird)
Im Paket selbst überprüfe ich welche Treiber Version installiert ist.
setup.inf
Wenn noch jemand einen Tipp zum verbessern hat, immer her damit.
Grüße
Gladop
ich hab das Projekt jetzt endlich wieder aufnehmen können.
Bisher hatten wir einfach eine Zuweisungsgruppe mit allen PCs, die diesen Treiber erhalten sollten.
@SRO
Die WMI Abfrage habe ich unter dem Reiter "Bereits installiert" erstellt.
Sprich Ist die Version größer als oder gleich installiere das Paket nicht, da es bereits installiert ist.
@matzef
Leider kann ich mit WMI nur die ganze Version auslesen.
Anders als bei SQL kann ich in der Abfrage nicht das Ergebnis bearbeiten.
Ich habe es jetzt wie folgt gelöst.
Mittels WMI Abfrage unter den Vorbedingungen wird überprüft ob in dem Computer eine unterstützte Grafikkarte steck.
(Welche Karten unterstützt werden, steht in der ListDevices.txt wenn der Treiber entpackt wird)
- WMI-Abfrage: SELECT Name FROM Win32_VideoController where Caption like "%NVIDIA%"
- Wert: z.B. Quadro
Im Paket selbst überprüfe ich welche Treiber Version installiert ist.
- Das Skrip "Installierte_Treiberversion.ps1" wird ausgeführt und schreibt die Version ohne Punkte in eine .txt.
(Der gleiche Befehl in Matrix selbst konnte nicht ausgeführt werden) - Mit ReadTextFile lese ich den Inhalt in eine Variable ein
- Die Variable kann ich dann vergleichen. (ohne Punkte)
Ist eine ältere Version installiert, startet die Installation
Ist die gleiche oder eine neuere Version des Treibers installiert, wird die Installation beendet, als erfolgreich gewertet und ein entsprechender Eintrag wird ins Log geschrieben.
Code: Select all
Get-wmiObject -Query 'SELECT DriverVersion FROM Win32_VideoController where Caption like "%NVIDIA%"' | foreach {$_.DriverVersion.Remove(0,6).Replace(".","")} | Out-File -FilePath "C:\Windows\temp\NVIDIA_DriverVersion.txt" -NoNewline
Code: Select all
[Set:CheckInstalledDriver]
CallHidden powershell.exe -file "%SRC%\Installierte_Treiberversion.ps1" -SilentMode "YES"
Set InstaledDriverVersion=ReadTextFile ("C:\Windows\temp\NVIDIA_DriverVersion.txt")
If "%InstaledDriverVersion%" < "55286" Then "Set:Installation" Else "Set:AllreadyInstalled" EndIf
[Set:Installation]
AddMeter -1
Call cmd.exe /c msg * "Grafikkartentreiber-Installation. Bitte warten bis die Installation abgeschlossen ist. Während der Installation kann der Bildschirm kurzzeitig schwarz werden."
Call "%Src%\setup.exe" -n -s
If "%ErrorLevel%" <> "0" Then "SET:InstallationError" EndIf
[Set:InstallationError]
ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText% setup.exe
Abort
[Set:AllreadyInstalled]
Exit "Ein Nvidia Treiber mit der Version 552.86 oder aktueller ist bereits installiert. Installation wird als erfolgreich gewertet."

Grüße
Gladop
Who is online
Users browsing this forum: No registered users and 5 guests