heinz15
Goto Top

Systemvariabeln eines Remotesystems auslesen

Hallo,

ich habe folgendes Problem: Ich möchte über ein Script ein paar Dateien auf Computer im Netzwerk verteilen, dazu möchte ich die Systemvariablen (z.B: %ProgramFiles%, %Temp% usw.) des jeweiligen Rechners auslesen.

Gibt es dafür vielleicht ein command line tool, oder geht es auch mit Windows – Bordmitteln?

LG. & Danke Heinz

Content-Key: 70065

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

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: Dani
Dani 03.10.2007 um 17:03:42 Uhr
Goto Top
Hallo Heinz,
paar Dateien auf Computer im Netzwerk verteilen, dazu möchte ich die Systemvariablen (z.B:
%ProgramFiles%, %Temp% usw.) des jeweiligen Rechners auslesen.
Na gut aber warum musst du dann die Variablen auslesen. Die Standardvariablen gibt es auf jedem Windowssystem. Somit brauchst du nichts auslesen. Du startest das Skript auf einem Server oder Remote. Das sollte kein Unterschied machen!

Sprich du kannst die Standardvariablen problemlos benutzen:
C:\Dokumente und Einstellungen\%username%>set
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
APPDATA=C:\Dokumente und Einstellungen\%username%\Anwendungsdaten
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=test
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\%username%
LOGONSERVER=\\S-HW01
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 14 Stepping 8, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0e08
ProgramFiles=C:\Programme
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Temp
TMP=C:\Temp
ULTRAMON_LANGDIR=C:\Programme\UltraMon\Resources\de
USERDNSDOMAIN=yyyyy
USERDOMAIN=yyyyy
USERNAME=%username%
USERPROFILE=C:\Dokumente und Einstellungen\%username%
windir=C:\WINDOWS

Grüße
Dani
Mitglied: Heinz15
Heinz15 03.10.2007 um 19:37:06 Uhr
Goto Top
Ja schon, aber dabei habe ich das Problem wenn es sich z.B. um ein englisches System handelt der Pfad für die Programme C:\Program Files ist und nicht C:\Programme.
Mitglied: TuXHunt3R
TuXHunt3R 03.10.2007 um 20:08:34 Uhr
Goto Top
Das ist dann aber eher ein Problem mit den Leerzeichen. Dies kannst du umgehen, indem die Pfadangaben jeweils in zwei Anführungszeichen " packst.

Noch eine Empfehlung:

Mit dem Tool xcmd.exe kannst du remote Kommandos ausführen, d.h. innerhalb des Netzwerks. Über das Internet gehts Gott Sei Dank nicht. Du kannst auch remote eine Konsolensitzung starten, ähnlich wie mit SSH unter Linux, nur eben unverschlüsselt.

Ich weiss nicht, ob man das noch irgendwo downloaden kann. Als ich bei Google mal XCMD eingegeben habe, bin ich gerade mal auf 3 Ergebnisse gekommen. 2 davon hatten nichts mit dem Tool zu tun und beim dritten gab es keinen Downloadlink. Ich habe es aus der Firma abgezügelt, ich könnte es dir schicken, wenn du mir deine Mailadresse gibst (selbstverständlich virenfrei). Aber Vorsicht, einige Virenscanner schlagen darauf an, weil es halt eine Gefahr darstellt, dass du einfach so vom Benutzer unbemerkt auf dessen CMD-Konsole zugreifen kannst.

Edit: Adminrechte auf dem Remotesystem sind Voraussetzung, damit XCMD läuft!
Mitglied: TuXHunt3R
TuXHunt3R 03.10.2007 um 20:16:19 Uhr
Goto Top
Noch was:

Du kannst in deinem Batch pro Sprache eine Sprungmarke setzen. Am Anfang des Batchs überprüfst du dann mit den folgenden Befehlszeilen die Sprache des Remote-Systems (das Tool xcmd vorausgesetzt):

xcmd \\<Remotesystem oder mit dem Batch mitgegebene Variable> "echo %ProgramFiles%" | find /i "Programme" >nul  
if errorlevel 1 (
goto Deutsch
) else (
goto Englisch
)

Hier ist es einfach eine Unterscheidung zwischen Deutsch und Englisch.
Wenns mit der Zeile "if errorlevel 1" nicht klappt, versuchst mit "if not errorlevel 0".
Mitglied: Dani
Dani 03.10.2007 um 21:13:54 Uhr
Goto Top
Ja schon, aber dabei habe ich das Problem wenn es sich z.B. um ein englisches System
handelt der Pfad für die Programme C:\Program Files ist und nicht C:\Programme.
Das spielt doch keine Rolle. Im englischen heißen die Variablen gleich. Sprich in %programfiles% steht halt dann C:\Program Files drin statt C:\Programme.


Grüße
Dani
Mitglied: Heinz15
Heinz15 04.10.2007 um 08:58:49 Uhr
Goto Top
Hallo Dani,

erstmal danke für deine Hilfe. Dass Problem was ich damit habe ist das die Systemvariablen ja lokal aufgelöst werden (das Script soll ja auf zB. meinem Rechner ausgeführt werden und dann die Daten auf die Systeme im Netzwerk verteilen.) Oder habe ich was falsch verstanden und es funktioniert eh ganz einfach?

LG.Heinz
Mitglied: Logan000
Logan000 04.10.2007 um 09:13:36 Uhr
Goto Top
Lass das Skript doch lokal laufen. z.B. im Loginskript des Users.
Bau eine Prüfung ein Änderungsdatum Quelldatei > ZielDatei und lass den Client sich holen was er brauch.
Mitglied: Heinz15
Heinz15 04.10.2007 um 12:13:02 Uhr
Goto Top
Danke,

mit xcmd funktioniert es perfekt - ist ein wirklich ein super tool! Danke!

LG. Heinz