Registry Wert auslesen und vergleichen
Hi,
da in unserem Unternehmen hauptsächlich Vertriebler mit NB arbeiten, habe ich keine Möglichkeit eine zentrale Administration bei uns durchzuführen.
Jetzt möchte ich aber die Rechner überprüfen welche Softwareversion unserer AV-Software installiert ist.
Jetzt habe ich verständlicherweise keine Lust jeden User anzurufen und ihn nachsehen zu lassen. Daher möchte ich einen Batchjob schreiben, der das für mich übernimmt.
Der Batchjob soll an einer von mir definierten Stelle einen Schlüsselauslesen und dann mit einer Variabel vergleichen. Je nach Ergebnis, soll mir eine Mail geschickt werden.
Das Auslesen gelingt mir mit reg query und auch das Versenden der Mail habe ich schon realisiert, nur wie kann ich den ausgelesenen Wert vergleichen
IF "HKEY_Local_Machine\Software\Bla\Blub\Verison" == 6.01
funktioniert genau so wenig wie
reg query "HKEY_Local_Machine\Software\Bla\Blub\Verison" = $test
Vielen Dank für die Hilfe
Steffen
da in unserem Unternehmen hauptsächlich Vertriebler mit NB arbeiten, habe ich keine Möglichkeit eine zentrale Administration bei uns durchzuführen.
Jetzt möchte ich aber die Rechner überprüfen welche Softwareversion unserer AV-Software installiert ist.
Jetzt habe ich verständlicherweise keine Lust jeden User anzurufen und ihn nachsehen zu lassen. Daher möchte ich einen Batchjob schreiben, der das für mich übernimmt.
Der Batchjob soll an einer von mir definierten Stelle einen Schlüsselauslesen und dann mit einer Variabel vergleichen. Je nach Ergebnis, soll mir eine Mail geschickt werden.
Das Auslesen gelingt mir mit reg query und auch das Versenden der Mail habe ich schon realisiert, nur wie kann ich den ausgelesenen Wert vergleichen
IF "HKEY_Local_Machine\Software\Bla\Blub\Verison" == 6.01
funktioniert genau so wenig wie
reg query "HKEY_Local_Machine\Software\Bla\Blub\Verison" = $test
Vielen Dank für die Hilfe
Steffen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 35436
Url: https://administrator.de/contentid/35436
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Steffen,
zwei mögliche Ansätze sind wie folgt:
a)
- Auslesen eine (größeren) Registry-Hives in eine Temp-Datei
- Finden der relevanten Zeile mit dem gesuchten Wert mittels Find
- Zerlegen der Zeile mit eine FOR /F ..IN..DO Anweisung.
b)
- Auslesen einer Zeile mit REG QUERY ...[exakter RegKey]
- Zerlegen der Zeile mittels FOR /F..In..DO-Anweisung
Der Fall a) ist von Markus "nullplan001" Wichmann hier behandelt worden:
Registry ohne reg.exe bearbeiten
Den Weg b) habe ich z.B. im Tutorial "Workshop Batch for Runaways III - Umgang mit Datums- und Zeitvariablen.." beschrieben.
Aber auch die Forumssuche nach "REG.exe Batch" sollte Dir Beispiele liefern.
Gruß
Biber
zwei mögliche Ansätze sind wie folgt:
a)
- Auslesen eine (größeren) Registry-Hives in eine Temp-Datei
- Finden der relevanten Zeile mit dem gesuchten Wert mittels Find
- Zerlegen der Zeile mit eine FOR /F ..IN..DO Anweisung.
b)
- Auslesen einer Zeile mit REG QUERY ...[exakter RegKey]
- Zerlegen der Zeile mittels FOR /F..In..DO-Anweisung
Der Fall a) ist von Markus "nullplan001" Wichmann hier behandelt worden:
Registry ohne reg.exe bearbeiten
Den Weg b) habe ich z.B. im Tutorial "Workshop Batch for Runaways III - Umgang mit Datums- und Zeitvariablen.." beschrieben.
Aber auch die Forumssuche nach "REG.exe Batch" sollte Dir Beispiele liefern.
Gruß
Biber
@Welnex
Moin Steffen, ist Deine Frage noch offen oder hast Du anderswo eine Antwort bekommen?
Gruß vom MOD
Biber
Moin Steffen, ist Deine Frage noch offen oder hast Du anderswo eine Antwort bekommen?
Gruß vom MOD
Biber
Moin Welnex,
na, da warte ich gespannt mit.
Ich denke nicht, dass Du da ohne Hilfsutilities etwas Elegantes hinbekommst.
Ich schaffe es jedenfalls nicht elegant... würde bestimmt zwei Zusatzzeilen brauchen, um einen Registry-Schlüsselwert zu ermitteln
Heißt, wenn ich so einen Plan wie Du hätte, dann würde ich in meinem Batch einen kleinen CALL-Block hinterlegen namens ":GetRegKey" und den jeweils vorher aufrufen, um den gesetzten Wert in der Registry zu ermitteln.
Wenn Du was Elegantes ausgeknobelt hast, poste es bitte.
Beispiel-Code Für so einen ":GetRegKey"-Block, hier mal als eigenständiger Batch, der eine GLOBALE Variable %RegVal% setzt.
[Anmerkung: Der angefragte RegKey liefert bei mir mit Reg.exe:
HKEY_CURRENT_USER\Software\Microsoft\SecurityCD
Service Pack REG_SZ 2
[Ende Anmerkung]
:: Beispielaufruf am CMD-Prompt...
Gruß
Biber
na, da warte ich gespannt mit.
Ich denke nicht, dass Du da ohne Hilfsutilities etwas Elegantes hinbekommst.
Ich schaffe es jedenfalls nicht elegant... würde bestimmt zwei Zusatzzeilen brauchen, um einen Registry-Schlüsselwert zu ermitteln
Heißt, wenn ich so einen Plan wie Du hätte, dann würde ich in meinem Batch einen kleinen CALL-Block hinterlegen namens ":GetRegKey" und den jeweils vorher aufrufen, um den gesetzten Wert in der Registry zu ermitteln.
Wenn Du was Elegantes ausgeknobelt hast, poste es bitte.
Beispiel-Code Für so einen ":GetRegKey"-Block, hier mal als eigenständiger Batch, der eine GLOBALE Variable %RegVal% setzt.
[Anmerkung: Der angefragte RegKey liefert bei mir mit Reg.exe:
HKEY_CURRENT_USER\Software\Microsoft\SecurityCD
Service Pack REG_SZ 2
[Ende Anmerkung]
::-- snipp GetRegKey.bat
:: Aufruf GetRegKey.bat RegKey RegSubKey
@echo off & (for /f "skip=4 delims=" %%i in ('reg query %1 /v %2') do for %%a in (%%i) do Set x=%%a)
(set RegVal=%x%) && echo [Debug] RegValue von %1 %2 ist [%regVal%]
::-- snipp GetRegKey.bat
>f:\administrator\getRegKey.bat "HKCU\Software\Microsoft\SecurityCD" "Service Pack"
...und Ergebnis/ Output...
[Debug] RegValue von "HKCU\Software\Microsoft\SecurityCD" "Service Pack" ist [2]
Gruß
Biber