wolfshund
Goto Top

Batch - Remote PC Daten auslesen

Welche Daten kann man mit hilfe einer Batch über einen, sich im Netzwerk befindenen PC, herrausfinden?

Hallo zusammen,

ich probiere im Moment eine Batch datei zu schreiben, mit der ich verschiedenste Daten über einen Remote PC herausfinden kann.
Sinn und Zweck der ganzen Sache soll eine einfache inventarisierung sein.
Es ist auch nur ein Versuch face-smile Zum austesten was so funktioniert und was nicht.

Besonderheit ist, dass ich die Batch Datei auf meinem PC ausführen möchte und der mir dann eine .txt Datei lokal speichert mit den Informationen über den Remote Computer.


Mein System: Windows XP SP3 - in einer Domäne (AD)
Remote Systeme: Windows XP SP3 Windows XP SP2 Windows2000


Hier zuerst der momentane Code. Gewisse Schnipsel sind natürlich auch "nur kopiert" und nicht selber geschrieben.
Ich habe ein paar Kommentare zugefügt um näher zu erläutern.

@echo off
echo.
echo - Daten Remote Auslesen -
echo.
echo.
::Benutzername/Passwort für Remote Zugriffsrechte?
::echo - Login: -
::echo.
::set /p user=Username:
::Set /p pw=Password:
echo.
echo.
set /p pchost=Ziel Host:
cls
echo.
echo - Remote Zugriff auf %pchost% -
echo.
echo.
echo -------------------------- >> Daten_%pchost%.txt
echo Daten von %pchost% >> Daten_%pchost%.txt
echo -------------------------- >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt


::Liest natürlich die lokale Daten aus, da Befehl lokal ausgeführt wird.

::IP-Adresse auslesen:
echo IP-Adresse auslesen...
echo set /a s=%%s%%+1 > ip.bat
echo set ip%%s%%=%%1 >> ip.bat
ipconfig /all | findstr "IP-Ad" > ip.txt  
set s=0
for /f "tokens=14*" %%i in (ip.txt) do call ip %%i%%j  
del ip.txt
del ip.bat
echo IP-Adresse: %ip1% >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt


::Liest natürlich die lokale Daten aus, da Befehl lokal ausgeführt wird.

::MAC-Adresse auslesen:
echo Netzwerkadapter auslesen...
echo MAC-Adresse auslesen...
echo Netzwerkadapter / MAC-Adressen: >> Daten_%pchost%.txt
getmac /s %ip1% /v /FO List >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt


:: Systeminfo /S %ip1% /U Domäne\Benutzer /P Passwort ?

::Systeminfo auslesen:
echo Systeminfo auslesen...
Systeminfo /S %ip1% >> systeminfo.txt
echo    - Hostname...
findstr "Hostname" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Betriebssystemname...
findstr "Betriebssystemname" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Betriebssystemversion...
findstr "Betriebssystemversion" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Ursprüngliches Installationsdatum...
findstr "Ursprüngliches Installationsdatum" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Systemhersteller...
findstr "Systemhersteller" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Systemmodell...
findstr "Systemmodell" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Gesamter physikalischer Speicher...
findstr "Gesamter" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Domaene...
findstr "Dom„ne:" systeminfo.txt >> Daten_%pchost%.txt  
echo    - Anmeldeserver...
findstr "Anmeldeserver" systeminfo.txt >> Daten_%pchost%.txt  
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt
del systeminfo.txt



::Deaktivierte Dienste abfragen:
::wmic /node:%ip1% service where startmode='disabled' get caption, state 

::IP Adresse und DNS Server abfragen:
::wmic /node:%ip1% path win32_networkadapterconfiguration where "IPenabled='true'" get ipAddress,dnsserversearchorder 

::HDD Auslesen (Name, Freespace, FileSystem, Size)
echo Hard Disk Drive auslesen...
wmic /node:%ip1% logicaldisk where "drivetype=3" get Name,Freespace,FileSystem,Size >> temphdd.txt  
echo (H)ard (D)isk (D)rive: >> Daten_%pchost%.txt
more temphdd.txt >> Daten_%pchost%.txt
del temphdd.txt
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt

::Arbeitsspeicher auslesen (Über Systeminfo)
::wmic /node:%ip1% os get totalvirtualmemorysize



::Task auslesen
echo Task(s) auslesen...
echo z.Z. laufende Tasks: >> Daten_%pchost%.txt
tasklist /s %pchost% >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt
echo. >> Daten_%pchost%.txt


set Programm=icq.exe

tasklist |find /i "%Programm%" >nul  
if %errorlevel% == 0 (
echo Das Programm "%Programm%" laeuft gerade!  
) else (
echo Das Programm "%Programm%" laeuft gerade nicht!  
)


echo.
echo [Any Key] Programm Beenden
pause>NUL

Ich weiß... ein wenig viel. Aber ich hoffe es gibt da n Trick - irgendwas schlaues, was mir noch nicht eingefallen ist oder ich es noch nicht im Netz gefunden habe ^^

Ich danke schonmal im Voraus für nette Antworten face-smile


mit freundlichen grüßen
Wolfshund

ps.: Falls jemandem noch was einfallen sollte, was man so abfragen könnte, über jeden post dankbar!

Content-ID: 114470

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

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

Logan000
Logan000 23.04.2009, aktualisiert am 18.10.2012 um 18:38:03 Uhr
Goto Top
Moin Moin

Ich bin kein Batch Profi. Ich denke aber das die Möglichkeiten unter VBS etwas umfangreicher sind.
Schau mal hier:
http://www.quaschtel.de/wsh/wmi.htm
oder hier
http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr= ...

Ansonsten würde ich der diese Tutorial nahelegen:
Oder natürlich Tools wie .

Gruß L.
Scroller
Scroller 23.04.2009 um 10:10:16 Uhr
Goto Top
Hi,

du kannst das Komandozeilenprogramm wmic in batch verwenden
um detailierte informationen am prompt über deinen oder einen remote-pc zu bekommen. Bsp. infos zum Betiebssystem (hier:letzter neustart)

wmic os get lastbootuptime


gruss scroller
dog
dog 23.04.2009, aktualisiert am 18.10.2012 um 18:38:03 Uhr
Goto Top
Wolfshund
Wolfshund 23.04.2009 um 13:53:29 Uhr
Goto Top
Hallo zusammen,

ich hab heute nochmal ein wenig rumprobiert und wollte euch meine Lösung mal präsentieren. Eventuell hat ja sogar jemand eine verwendung dafür:

Zuerstmal erstelle ich Remote einen Task auf dem anderen System (Bisher nur bei Windows XP SP3 getestet):

@echo off
echo.
echo --------------------------
echo   Task Remote erstellen
echo --------------------------
echo.
echo "\\Server\Freigabe\test.bat"  
echo.
echo.
set /p pchost=Hostname:
echo.
set /p user=Administrator  User (Bsp.: Domaene\Administrator):
set /p pw=Passwort:
::set /p task=UNC Pfad zum Task:
echo.
echo.
echo Task "Auslesen" wird auf %pchost% erstellt...  
schtasks /create /s %pchost% /U %user% /P %pw% /RU %user% /RP %pw% /tn "Auslesen" /tr \\Server\Freigabe\test.bat /sc EINMAL /st 12:00:00  
echo.
echo Task "Auslesen" mit beliebiger Taste auf %pchost% ausführen...  
pause > NUL
schtasks /run /S %pchost% /U %user% /P %pw% /TN "Auslesen"  
echo.
echo.
echo Programm Beenden mit beliebiger Taste...
pause > NUL
(Pfade aus Sicherheitsgründen geändert face-smile )
Also diese Datei erstellt erstmal einen Task und führt diesen dann auch aus.

Dann die Datei, die ausliest - da hat sich noch nicht soviel drann getan, weil ich zuerst das Remote Programm bearbeitet hab:

@echo off
echo.
echo -------------------------- >> \\server\freigabe\logfile.txt
echo Daten von %computername% >> \\server\freigabe\logfile.txt
echo -------------------------- >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt


::IP-Adresse auslesen:
echo IP-Adresse auslesen...
echo set /a s=%%s%%+1 > ip.bat
echo set ip%%s%%=%%1 >> ip.bat
ipconfig /all | findstr "IP-Ad" > ip.txt  
set s=0
for /f "tokens=14*" %%i in (ip.txt) do call ip %%i%%j  
del ip.txt
del ip.bat
echo IP-Adresse: %ip1% >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt


::MAC-Adresse auslesen:
echo Netzwerkadapter auslesen...
echo MAC-Adresse auslesen...
echo Netzwerkadapter / MAC-Adressen: >> \\server\freigabe\logfile.txt
getmac /s %ip1% /v /FO List >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt



::Systeminfo auslesen:
echo Systeminfo auslesen...
Systeminfo /S %ip1% >> systeminfo.txt
echo    - Hostname...
findstr "Hostname" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Betriebssystemname...
findstr "Betriebssystemname" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Betriebssystemversion...
findstr "Betriebssystemversion" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Ursprüngliches Installationsdatum...
findstr "Ursprüngliches Installationsdatum" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Systemhersteller...
findstr "Systemhersteller" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Systemmodell...
findstr "Systemmodell" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Gesamter physikalischer Speicher...
findstr "Gesamter" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Domaene...
findstr "Dom„ne:" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo    - Anmeldeserver...
findstr "Anmeldeserver" systeminfo.txt >> \\server\freigabe\logfile.txt  
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt
del systeminfo.txt



::Deaktivierte Dienste abfragen:
::wmic /node:%ip1% service where startmode='disabled' get caption, state 

::IP Adresse und DNS Server abfragen:
::wmic /node:%ip1% path win32_networkadapterconfiguration where "IPenabled='true'" get ipAddress,dnsserversearchorder 



::HDD Auslesen (Name, Freespace, FileSystem, Size)
echo Hard Disk Drive auslesen...
wmic /node:%ip1% logicaldisk where "drivetype=3" get Name,Freespace,FileSystem,Size >> temphdd.txt  
echo (H)ard (D)isk (D)rive: >> \\server\freigabe\logfile.txt
more temphdd.txt >> \\server\freigabe\logfile.txt
del temphdd.txt
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt

::Arbeitsspeicher auslesen (Über Systeminfo)
::wmic /node:%ip1% os get totalvirtualmemorysize



::Task auslesen
echo Task(s) auslesen...
echo z.Z. laufende Tasks: >> \\server\freigabe\logfile.txt
tasklist /s %computername% >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt
echo. >> \\server\freigabe\logfile.txt


set Programm=mcshield.exe

tasklist |find /i "%Programm%" >nul  
if %errorlevel% == 0 (
echo Das Programm "%Programm%" laeuft gerade! >> \\server\freigabe\logfile.txt  
) else (
echo Das Programm "%Programm%" laeuft gerade nicht! >> \\server\freigabe\logfile.txt  
)
echo. >> \\server\freigabe\logfile.txt

echo.
echo [Any Key] Programm Beenden
pause>NUL

Hat noch jemand Ideen? Ratschläge oder sonstiges? Würde mich über alles freuen face-smile


mfg
Wolfshund

ps.: Ein Problem ist noch aufgetaucht:
Er erstellt die logfile wie er soll mit allen angefragten Daten. Aber der Task wird beim Client nicht beendet. Er wird dauerhaft ausgeführt.
(Den Wald vor lauter Bäumen nicht gesehen ... am ende stand noch "pause>NUL" ... natürlich erwartet der dann eine eingabe. entfernt. läuft.

Bleibt nur noch:
Der User bekommt keine Meldung darüber, dass was ausgeführt wird. Auch das CMD-Fenster öffnet sich nicht. (Soll ja auch so sein - aber warum?)