77575
Goto Top

Verhalten bei cmd script wenn man es mit psexec remote ausführt

Hallo,

ich habe ein batch script das auch einwandfrei funktioniert wenn ich es direkt auf dem rechner ausführe, jedoch verhält es sich merkwürdig wenn ich es remote ausführe.

ich verbinde mich mit psexec auf einen rechner:
psexec \\pcname -s cmd

dann wechsle ich in des Verzeichnis in dem das script liegt und führe es aus.
in dem script gibt es 2 abfragen mit set /P

hier das script:
@echo off SetLocal EnableDelayedExpansioncolor F1if exist C:\Windows\SysWOW64 set "OS=Windows 64"echo Munich [muc]echo Berlin [berlin]echo Hamburg [hamburg]set /P _DEPLOY_LOCATION= your choice:if /i "%_DEPLOY_LOCATION%"=="muc" set "_DEPLOYSSHARE3=\\192.168.5.1\freigabe" & goto :_DEPLOY_STARTif /i "%_DEPLOY_LOCATION%"=="berlin" set "_DEPLOYSSHARE3=\\192.168.4.1\freigabe" & goto :_DEPLOY_START if /i "%_DEPLOY_LOCATION%"=="hamburg" set "_DEPLOYSSHARE3=\\192.168.3.1\freigabe" & goto :_DEPLOY_START:_DEPLOY_START set "_DEPLOYSSHARE1=\\192.168.0.1\freigabe1" set "_DEPLOYSSHARE2=\\192.168.0.2\freigabe2" set "_tmpDEPLOY=C:\TEMP\_deployX" if not exist %_tmpDEPLOY% mkdir %_tmpDEPLOY% >NULecho.echo text 123echo text 456echo text 789echo usw...echo Cancel [x]set /P _deploy_AUSWAHL= your choice:if /i "%_deploy_AUSWAHL%"=="123" goto _DEPLOY_123if /i "%_deploy_AUSWAHL%"=="456" goto _DEPLOY_456if /i "%_deploy_AUSWAHL%"=="789" goto _DEPLOY_789if /i "%_deploy_AUSWAHL%"=="x" goto _DEPLOY_END goto _DEPLOY_START:: ab hier die einzelnen dinge die erledigt werden müssen.....:_DEPLOY_END rd /S /Q %_tmpDEPLOY%goto END:ENDecho schluss, aus ...fertigpause


Der erste set /P _DEPLOY_LOCATION= your choice: passt. ich wähle z. Bsp. muc aus und dann sollte einfach set /P _deploy_AUSWAHL= your choice: kommen, aber es wird 5 mal untereinander der Text
echo.echo text 123echo text 456echo text 789echo usw...echo Cancel [x] angezeigt.
egal was ich dann auswähle, er springt immer wieder zum _DEPLOY_START, ausser wenn ich x wähle dann springt das script wie gewünscht zum Ende.

auch komisch ist das der befehl cls und das color F1 nicht funktioniert per remote verbindung. die farbe ändert sich nicht und bei cls wird nicht der screen gelöscht sondern nur das angezeigt
C:\WINDOWS>clscls♀

Wie gesagt wenn ich direkt auf den rechner gehe und das script i der kommandozeile ausführe macht es alles was es soll. nur eben nicht wenn ich es remote machen will.
dabei ist es auch egal ob ich psexec mit -s als system ausführe oder als z. bsp. domänen admin.

mache ich etwas falsch das die set /P nicht funktionieren?

gruss 01-01-01

Content-Key: 151242

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

Printed on: April 25, 2024 at 14:04 o'clock

Mitglied: 60730
60730 Sep 17, 2010 at 09:28:38 (UTC)
Goto Top
Moin,

bitte verwende unsere Code Blöcke für Code.

Dann @echo off in Problembätchen ist ganz supi face-sad

Wenn das Forum für jede "Problembatch mit führendem €echo off einen @ bekommen würde, wären wir Müllionöhre.
& goto :_DEPLOY_START
ist überflüssig. Da läuft er eh hin und die dann "falschen" if /i werden eh übersprungen.

Bitte schau dir unsere Code Blöcke / Formatierungshilfe an und teste das mal ohne dieses @echo off.

Denn "so ist es für uns nicht so einfach zu helfen.
Btw: Ich ahne, was du da eigentlich bauen willst und wenns das ist - ist dein Ansatz falsch, aber vielleicht kannst du ja auch mal in ein paar zeilen (gerne mehr als meine) schreiben, was das script können soll.

Gruß
Member: colinardo
colinardo Sep 17, 2010 at 09:38:43 (UTC)
Goto Top
Schon mal versucht das Script direkt beim psexec-Aufruf anzugeben, ohne vorher in eine Remote-Shell zu wechseln ?
d.h.:
psexec.exe \\remote-pc /i [pfad zur batch]
Das "/i" ist nur für deine Debugzwecke mit eingefügt...(Dann läuft das Script interaktiv auf dem Remote-System)
Mitglied: 77575
77575 Sep 17, 2010 at 11:23:23 (UTC)
Goto Top
& goto :_DEPLOY_START
stimmt, die hatte ich nur noch drin weil ich rumprobiert habe mit pause um zu sehen warum er mir den text 5 mal ausgibt.

was ist an den if /I falsch?

wenn ich ohne echo off teste sehe ich auch nur das ganze sehr schnell mehrmals durchlaufen.
nur die variable %_deploy_AUSWAHL% hat bei jedem durchlauf einen anderen wert
if /i "a"=="123" goto _DEPLOY_123
if /i "a"=="456" goto _DEPLOY_456
und dann mal

if /i "s"=="123" goto _DEPLOY_123
if /i "s"=="456" goto _DEPLOY_456

ich will mit dem script software unattend instalieren und zwar remote. das ganze funktioniert auch wenn ich mich direkt an dem rechner anmelde.

wenn ich das script direkt mit psexec aufrufe ist es das selbe verhalten.


gruss 01-01-01