switch2411
Goto Top

Werte aus der Registry auslesen in einem Netzwerk

Hallo Leute,

ich möchte aus einem Netzwerk mit ca. 70 Rechnern aus der Registry einen Wert auslesen und den danach in ein Textfile schreiben lassen.

Es geht darum, das ich den Teamviewer Host auf allen Clients ausrollen muss und dann mittels einer automatisierten Lösung die ID auslesen kann. Weil wenn
ich bei 70 Rechner durchrennen muss, wird das ziemlich öde face-smile

Folgendes hab ich bereits zusammengeschustert

@echo off
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "HKLM\Software\Teamviewer\Version4" /V
"ClientID"') do set /a "LAD=%%j"
echo %LAD% >> c:\test.txt

@echo off
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "HKLM\System\ControlSet001\Control\Computername\Computername" /V
"Computername"') do set "LAD=%%j"
echo %LAD% >> c:\test.txt


Wenn ich den Batch starte, schreibt er auch brav in das Textfile die ID und den PC Namen. Allerdings ist das immer nur local.

Ich hab mir gedacht, wenn ich das Text File auf einen Freigegeben Ordner lege,in den Batch Job dann den Pfad integriere und den Batchjob dann als Policy rausjage,
müßte er "normalerweiße" dann ja von allen Rechnern auf denen die Policy zieht, die ID auslesen und in das TextFile schreiben. Oder irre ich mich da ??

Ich wäre echt für ein bißchen Hilfe dankbar face-smile

Content-ID: 125566

Url: https://administrator.de/contentid/125566

Ausgedruckt am: 20.11.2024 um 00:11 Uhr

Logan000
Logan000 23.09.2009 um 09:03:07 Uhr
Goto Top
Moin Moin

Ich wäre echt für ein bißchen Hilfe dankbar
Wer ist das nicht?
Aber so wie ich das sehe, brauchst Du keine. Dein Plan sollte so funktionieren.

Gruß L.
Switch2411
Switch2411 23.09.2009 um 09:34:47 Uhr
Goto Top
Tja das ist halt das Problem.. ""sollte""

wär halt klasse,wenn jemand so etwas ähnliches schon mal vorhatte...
Logan000
Logan000 23.09.2009 um 10:08:08 Uhr
Goto Top
Moin

Die eine oder andere Anforderung in dieser Richtung hat wohl jeder (früher oder später).
Wir haben uns gleich für eine Inventarisierungssoftware entschieden. Scannt das netz nach laufenden PC und liest so das ganze geschleuder (IP, MAC, PC-name, OS Version Inst. Software, install. Updates usw. ) in eine DB.

Gruß L.
Switch2411
Switch2411 23.09.2009 um 10:19:51 Uhr
Goto Top
Nunja, das ist ja nicht das Ziel..eine Inventarisierungssoftware haben wir bei dem Kunden schon..nur sehe ich in der Software
leider nicht die benötigten Infos..

lg
45877
45877 23.09.2009 um 11:51:23 Uhr
Goto Top
Hallo,

das ganze sollte funktioniren. Oder du machst es per psexec und srtatest den batch job so auf allen kisten automatisiert.
81825
81825 23.09.2009 um 12:10:06 Uhr
Goto Top
Hallo,

REG kennt einen Vorspann "\\Computername" zum jeweiligen Key, Hast du das damit schon mal probiert? Das setzt natürlich voraus, dass du die Namen der Rechner in deinem Netzwerk auch kennst.
(In der Hilfe zu Reg ist das nur mit einem "\" erläutert, benötigt werden aber 2. )
Switch2411
Switch2411 23.09.2009 um 13:35:00 Uhr
Goto Top
Hallo,

Nein das wußte ich nicht..aber muss ich dann für alle 70 Geräte den Namen eintragen ? denke mal schon oder..

ja das mit dem psexec hab ich mir auch schon überlegt..
81825
81825 23.09.2009 um 13:38:19 Uhr
Goto Top
Hallo,
den Namen musst du schon eintragen, aber das kann man doch über eine for-Schleife und eine Liste mit den Computernamen lösen. face-wink
Switch2411
Switch2411 23.09.2009 um 13:57:59 Uhr
Goto Top
Also das mit der FOR Schleife will nicht so recht klappen..

ich schaffs nicht, das er mir zb. eine Reihe von IP Adressen abfragt und genau diesen Wert zurückgibt den ich brauche..
Logan000
Logan000 23.09.2009 um 14:02:53 Uhr
Goto Top
Moin

Nichts gegen psexec, aber ich denke es ist leicter das per Loginskript zu erledigen, als zu hoffen das alle PC an sind oder vielleicht noch ein WOL aufruf davorzu basteln.

Gruß L.
81825
81825 23.09.2009 um 14:14:45 Uhr
Goto Top
@Switch2411
Dann mach ich dir mal einen Vorschlag, mit dem du mal spielen kannst. face-wink
del liste.txt 2>nul
for /L %%A in (1,1,20) do (
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B >> Liste.txt  
)
Switch2411
Switch2411 23.09.2009 um 14:31:16 Uhr
Goto Top
Das ist gut face-smile das funktioniert jetzt mal..

jetzt ist nur mehr die frage (ich weiß ich hab ne menge) wie ich es so schreiben kann, das er mir die angeforderten Infos aus der Registry rausholt..müßte ich diesen code dann in den bereits geschriebenen code einfügen..also in den, der mir die ID ausließt as der Registry ?
81825
81825 23.09.2009 um 14:43:18 Uhr
Goto Top
Du hast es erfasst. Einfach die Zeile

For /f %%a in (liste.txt) do (
.... bisheriger Code
)
an den Anfang deiner For-Schleife hinzufügen und den Key um \\%%a\ ergänzen.
Das sollte funktionieren. Natürlich dürfen in der erzeugten Liste keine IP-Adressen, sondern nur Computernamen stehen.
Der Dienst Remote-Registrierung muss auf allen Clients, die du anfassen willst, gestartet sein.
Und es sei noch darauf hingewiesen, dass so ausschließlich die Hives HKEY_LOCAL_MACHINE und HKEY_USERS bearbeitet werden können. face-wink
Switch2411
Switch2411 23.09.2009 um 14:55:50 Uhr
Goto Top
Hmm..also ausführen tut er das ganze einmal..in dem txt file stehen auch die Computernamen brav drinnen..allerdings kommt mir
vor,wie wenn in dann der Rest des Codes nicht mehr interessiert. in dem txt File steht interessanterweiße nämlich nur meine eigene ID und nicht die von den gescannten Rechnern..

hier mal das komplette File. ich bin mir sicher, das ich was übersehen hab.

echo 

for /L %%A in (80,1,82) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B >> c:\test.txt   

FOR /F "skip=2 tokens=2*" %%i IN ('reg query "HKLM\Software\Teamviewer\Version4" /V   
"ClientID"') do set /a "LAD=%%j"  
echo %LAD% >> c:\test.txt
)

echo
for /L %%A in (80,1,82) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B >> c:\test.txt   

FOR /F "skip=2 tokens=2*" %%i IN ('reg query "HKLM\System\ControlSet001\Control\Computername\Computername" /V   
"Computername"') do set "LAD=%%j"  
echo %LAD% >> c:\test.txt
)
81825
81825 23.09.2009 um 14:59:15 Uhr
Goto Top
Setze bitte deine Code in Tags, wie das beschrieben ist (Beitrag > bearbeiten)
Switch2411
Switch2411 23.09.2009 um 15:05:08 Uhr
Goto Top
schon erledigt, sorry..das hab ich übersehen...
81825
81825 23.09.2009 um 15:14:46 Uhr
Goto Top
In Zeile 4 solltest du die Ausgabe in eine "Liste.txt" oder einen anderen Dateinamen ausgeben, da du die Liste ja nochmal benötigst.
Vor Zeile 5 musst du den Code einsetzen, den ich in meinem Kommentar von 14:43 Uhr gepostet hatte und auch den Schnipsel \\%%a\ vor HKLM setzen.
Äquivalent musst du vor Zeile 15 verfahren und in beiden Fällen auch %%a zur Ausgabe in die Datei C:\test.txt mit berücksichtigen . face-smile
Wobei du den Code ab Zeile 15 imo garnicht benötigst, da du die Computernamen ja wohl bereits kennst. Oder übersehe ich da vielleicht etwas?
Switch2411
Switch2411 23.09.2009 um 15:18:59 Uhr
Goto Top
Ja die Computernamen kenn ich alle..allerdings muss ich sie ja den ausgelesenen ID´s auch zuordnen können.. Sonst hab ich ne
Menge Zahlen und keine Ahnung zu welchen Rechner sie gehören face-smile

ich versuch jetzt noch mal den Code anzupassen..

Danke auf jeden Fall für deine Hilfe..das ist echt gar nicht so leicht wie ichs mir eigentlich gedacht hab..
81825
81825 23.09.2009 um 15:20:44 Uhr
Goto Top
Wenn du kapiert hast, was da eigentlich passiert, ist es schon (verhältnismäßig) leicht. Deshalb lasse ich es dich ja auch selbst ausfummeln. face-wink
Switch2411
Switch2411 23.09.2009 um 15:25:20 Uhr
Goto Top
ausfummeln triffts richtig face-smile ich doktor schon den ganzen tag herum..

ich mein ich mag ja solche sachen die nicht einfach sind zu lösen, aber irgendwann..ja am liebsten würd ich dann schon in die Tischkante beißen *g*
81825
81825 23.09.2009 um 15:28:23 Uhr
Goto Top
Was nutzt dir das, wenn du das bis ins Kleinste vorgekaut bekommst, da bleibt in der Regel nichts hängen. Wenn du selbst Hand anlegen musst, wirst du dir sicher auch einen großen Teil merken und der beabsichtigte Lerneffekt ist vorhanden.
Switch2411
Switch2411 23.09.2009 um 15:44:23 Uhr
Goto Top
Ja da hast du Recht..

ich hab jetzt mal den Code insofern aktualisiert..der Batchjob startet jetzt, allerdings gibt er nichts aus..das ist jetzt interessant..er gibt keine fehlermeldung aus,aber auch keine erfolgsmeldung..

wär es möglich das es dann mit den Berechtigungen zusammenhängt, das er zb. nicht in die Registry hineinsehen darf auf dem Remotecomputer?
Switch2411
Switch2411 23.09.2009 um 15:47:12 Uhr
Goto Top
Hmm, an den Berechtigungen liegt es mal nicht..

also das versteh ich jetzt aber nicht..wenn das nicht funktionieren würde, müßte er doch eine fehlermeldung ausgeben.
81825
81825 23.09.2009 um 16:40:03 Uhr
Goto Top
Probiere den Befehl doch mal einzeln ohne Batch in der Konsole aus.
Switch2411
Switch2411 23.09.2009 um 16:50:28 Uhr
Goto Top
Ein paar Fehler hab ich gefunden..

1stens. die Berechtigung..
2tens. eine Klammer zu nach >>C:\liste.txt )

er schreibt brav die namen der rechner in das liste.txt file. aber in das andre file, ich nenn es jetzt mal c:\test.tct schreibt er rein "Echo on"

ich denke das ein Befehl zu viel ist..


echo 

for /L %%A in (80,1,85) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B >> c:\liste.txt   
)
For /F %%a in (c:\liste.txt) do (
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKLM\Software\Teamviewer\Version4" /V   
"ClientID"') do set /a "LAD=%%j"  
echo %LAD% >> c:\test.txt
)


echo
for /L %%A in (80,1,85) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B >> c:\liste.txt   
)
For /F %%a in (c:\liste.txt) do (
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKLM\System\ControlSet001\Control\Computername\Computername" /V   
"Computername"') do set "LAD=%%j"  
echo %LAD% >> c:\test.txt
)
81825
81825 23.09.2009 um 17:05:30 Uhr
Goto Top
Du hast ja in deiner Batch-Datei auch nur echo stehen, damit wird dir der Status für ECHO angezeigt: EINgeschaltet oder AUSgeschaltet. face-smile

Deine Zeile 07 und 08 sowie 18 und 19 müssen jeweils in einer Zeile stehen, falls das nicht bereits der Fall ist.

13 - 16 brauchst du nicht, hast du schon (03-05)
17 bis 21 kannst du dir schenken, wenn du Zeile 07 so änderst:

FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKLM\Software\Teamviewer\Version4" /V ClientID"') do @echo %%a  %%j >> C:\test.txt  
Switch2411
Switch2411 24.09.2009 um 08:46:42 Uhr
Goto Top
Guten Morgen,

nein das läuft nicht..er schreibt mir noch immer nur den Namen der Rechner hin ,aber die ID schreibt er nicht dazu..es kommt auch eine Fehlermeldung, das die Netzwerkadresse ungültig ist.

Allerdings schreibt er das nur in dem Teil, wo er in die Registry hineinsehen soll..
81825
81825 24.09.2009 um 09:48:09 Uhr
Goto Top
Guten Morgen!

Der Fehler mit der Netzwerkadresse kommt, wenn man das nicht beachtet:
Zitat von @81825:
Der Dienst Remote-Registrierung muss auf allen Clients, die du anfassen willst, gestartet sein.
Switch2411
Switch2411 24.09.2009 um 11:12:11 Uhr
Goto Top
Ja auf das hab ich auch geachtet..der rennt nämlich der Dienst..das is ja das eigenartige..

alles nicht so einfach muss ich feststellen face-wink
81825
81825 24.09.2009 um 11:16:36 Uhr
Goto Top
Rennt der Dienst, oder steht der im Status "Manuell" und ist nicht gestartet? Genau in dem Fall bekommst du nämlich diese Fehlermeldung.
Switch2411
Switch2411 24.09.2009 um 11:28:05 Uhr
Goto Top
Nein der steht auf Automatisch gestartet..das paßt schon..

hab den fehler auch bereits gefunden..anscheinend wollte das Gerät mal wieder einen Neustart..warum auch immer..

das negative an der geschichte ist jetzt, das er 2 files erstellt..in dem einen stehen die namen drinnen und in den andren stehen die ID´s drinnen..

gibt es einen befehl der das ganze dann zusammenführt..

also quasi

Computername und dann daneben oder darunter die ID


ich weiß, das ganze wird jetzt echt schon nervig,aber so in die Tiefe der Batchprog. war ich echt noch nie..

Tausend Dank auf jeden Fall mal an dich.. face-smile
Switch2411
Switch2411 24.09.2009 um 11:31:51 Uhr
Goto Top
Ich bin nah dran, ich weiß es.. face-smile

er schreibt mir jetzt schon mal die namen und die IP Adressen in eine Datei..allerdings schreibt er den Namen 2 mal und die ID 4 mal rein..
81825
81825 24.09.2009 um 11:45:00 Uhr
Goto Top
allerdings schreibt er den Namen 2 mal und die ID 4 mal rein..
Dann lies nochmal langsam, was ich alles geschrieben habe und kontrolliere, ob du das auch so gemacht hast. face-smile
Switch2411
Switch2411 24.09.2009 um 12:24:10 Uhr
Goto Top
so ein paar fehler hab ich noch ausgebügelt..

aber anscheinend auch wieder ein paar neue dazugeschrieben face-sad

er scannt jetzt die angegebene IP Range,das paßt,aber er schreibt nur den ersten namen den er erreicht in das file hinein..die andren werden gelöscht. dafür steht aber jetzt auch die ID in dem File drinnen..

hier nocheinmal das File

echo 

for /L %%A in (78,1,82) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do echo %%B > c:\liste.txt )  
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKEY_LOCAL_MACHINE\Software\Teamviewer\Version4" /V "ClientID"') do set /a "LAD=%%j" set @echo %%a %%j >> c:\liste.txt   
echo %LAD% >> c:\liste.txt

ich verlier langsam echt den Überblick..
81825
81825 24.09.2009 um 12:32:58 Uhr
Goto Top
Klar, weil du nicht liest, was man dir schreibt. face-sad

Druck's dir aus und vergleiche, dann findest du auch deine Fehler. Ich habe keine Lust mehr.
Switch2411
Switch2411 24.09.2009 um 15:02:19 Uhr
Goto Top
Ich glaubs dir das du keine Lust mehr hast..tut ma echt leid aber in diesen Tiefen war ich noch nie..

also entweder bin ich blind oder zu blöd das zu kapieren..ich hab jetzt alles genau so gemacht wie beschrieben, aber er macht einfach nicht das was er soll..
81825
81825 24.09.2009 um 15:10:37 Uhr
Goto Top
Das lasse ich mal unkommentiert so stehen. face-smile

echo off 
del C:\liste.txt 2>&1>nul
del C:\test.txt 2>&1>nul
for /L %%A in (78,1,82) do ( 
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.1.%%A ^| find "Routenverfolgung"') do @echo %%B >> c:\liste.txt )  

For /F %%a in (c:\liste.txt) do ( 
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKEY_LOCAL_MACHINE\Software\Teamviewer\Version4" /V "ClientID"') do @echo %%a %%j >> c:\test.txt   
)

type C:\test.txt
pause

ungetestet. Ich habe den Teamviewer nicht installiert.
Switch2411
Switch2411 24.09.2009 um 15:17:31 Uhr
Goto Top
ich halts nicht aus, genau so soll es sein..

Vielen Vielen Dank.. face-smile Wo darf ich das Bier hinschicken face-smile

und jetzt druck ich mir mein File aus und dann deines und vergleich es, das ich sehe wo meine Fehler liegen..

Nochmals Vielen Dank, echt...
81825
81825 24.09.2009 um 15:22:09 Uhr
Goto Top
Wo darf ich das Bier hinschicken face-smile
Trink's mal auf mein Wohl. Aber besauf dich nicht sinnlos! face-big-smile
Switch2411
Switch2411 24.09.2009 um 15:59:52 Uhr
Goto Top
Eines hab ich noch *fürcht* ich trau mich ja ehrlich gesagt gar net fragen..

den set /a Befehl, das ich nicht den Hex Code hab, wo muss ich den einfügen?

Achja, ich hab meine Fehler bereits gefunden..eigentlich könnt ich mir selber in den Hintern beißen, andererseits wär ich auf manches nie draufgekommen..
81825
81825 24.09.2009 um 16:05:13 Uhr
Goto Top
Dann ändere die Zeile 08 mal so:
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKEY_LOCAL_MACHINE\Software\Teamviewer\Version4" /V "ClientID"') do (set /a "LAD=%%j" & @echo %%a  %LAD% >> c:\test.txt)  

Mist. Der Parser baut mal wieder Fehler in der Anzeige ein, der Quelltext ist korrekt.

hinter dem do muss stehen:
(set /a "LAD=%%j" & @echo %%a %LAD% >> c:\test.txt)
Switch2411
Switch2411 24.09.2009 um 16:23:30 Uhr
Goto Top
Interessanterweiße gibt er jetzt bei jeden gescannten Rechner dieselbe ID aus..kann es sein das der SET Befehl immer nur auf das erste
Objekt zieht.
Die HEX Information sind nämlich beide verschieden..
Switch2411
Switch2411 24.09.2009 um 16:24:07 Uhr
Goto Top
gg ok dann hat sich das gerade erledigt.. face-smile nein doch nicht, er gibt immer denselben Key aus..
81825
81825 24.09.2009 um 16:29:51 Uhr
Goto Top
Das habe ich hier nicht probiert.

Ändere mal die erste Zeile in deiner Batchdatei in
@echo off & setlocal enabledelayedexpansion

und den Rest hinter do in der zuletzt geposteten Version in
(set /a "LAD=%%j" & @echo %%a !LAD! >> c:\test.txt)  

also bei dem 2. LAD die "%"-Zeichen gegen "!" tauschen.
Switch2411
Switch2411 24.09.2009 um 16:41:10 Uhr
Goto Top
perfekt..du bist der Beste..

Vielen Dank (wieder mal) face-wink
81825
81825 24.09.2009 um 16:56:32 Uhr
Goto Top
Nö, bin ich nicht. face-wink

Dann markiere das Thema bitte noch als Wie kann ich einen Beitrag als gelöst markieren?
Switch2411
Switch2411 24.09.2009 um 16:58:31 Uhr
Goto Top
War ne schwere Geburt..

aber nur zur Info..nicht mal die TeamViewer Leute haben so ein Tool *g* face-smile