winlicli
Goto Top

Skript in Kombination mit PSExec

Hallo zusammen,

ich würde gerne ein Skript schreiben der mich nach einem Hostnamen fragt, ich diesen eintippe,
Psexec gestartet wird und sich mit der CMD des Hosts verbindet.

Allesgut soweit.

Nur, sobald ich mich verbunden habe werde die Befehle in meinem Skript nicht auf die CMD des Hosts übertragen.

Beispiel:

PSexec verbinde dich mit Host1

Danach mache auf Host1 ipconfig.

Wie kann ich die Befehle in meinter BAT auf übertragen?

Hoffe es ist klar was ich meine.

Lg

Content-ID: 339181

Url: https://administrator.de/forum/skript-in-kombination-mit-psexec-339181.html

Ausgedruckt am: 23.12.2024 um 01:12 Uhr

114685
114685 29.05.2017 aktualisiert um 16:47:46 Uhr
Goto Top
Zitat von @WinLiCLI:

Hallo zusammen,

Hallo allein,

Hoffe es ist klar was ich meine.

Nee, isses nicht. :--)

Poste mal das fertige Script (bitte in Code-Tags), sieh dir vorher mal die Hilfe zu psexec an: psexec /?

Gruß
Meierjo
Meierjo 29.05.2017 um 16:52:03 Uhr
Goto Top
Hallo

Wenn auf dem "Ziel-Client" mit dem ausführenden User PSEXEC noch nie gestartet wurden, musst du zuerst die EULA akzeptieren.
eula
Oder per Regedit vorher den entsprechenden Eintrag beim CU hinterlegen
eulka

Gruss
emeriks
emeriks 29.05.2017 aktualisiert um 19:42:34 Uhr
Goto Top
Hi,
Nur, sobald ich mich verbunden habe werde die Befehle in meinem Skript nicht auf die CMD des Hosts übertragen.
Sorry, is aber logisch.

PSEXEC startet einen neuen Prozess auf einem anderen Computer.
Die Batch läuft weiterhin im CMD-Prozess auf dem lokalen Server.
Wie sollen da die nach dem PSEXEC folgenden Befehle auf dem anderen Computer greifen?

Du benötigst 2 Batch:
  1. Welches Dich nach den Computer fragt und dann die 2. Batch auf diesem Computer kopiert und dann dieses via PSEXEC auf diesem startet
  2. Welches die Kommandos enthält, welche auf dem anderen Computer ausgeführt werden sollen.

Bsp.
Batch 1
..... Abfrage des Zielcomputers ....
copy batch2.cmd \\zielcomputer\c$\batch2.cmd
psexec \\zielcomputer cmd.exe /c c:\batch2.cmd

Batch 2
... tue dies ...
... tue das ...

E.
114685
114685 29.05.2017 um 21:04:18 Uhr
Goto Top
Hi,

du hast Recht, wenn du in einer Batch-Datei mehrere Befehle ausführen möchtest.

Mit einem einzelnen Befehl klappt das aber auch ohne das Kopieren.
Um bei seinem Beispiel mit IPConfig zu bleiben, würde folgender Befehl funktionieren:
psexec \\Remotecomputername %COMSPEC%  "/C IPCONFIG /ALL > %TEMP%\IPCONFIGINFO:txt"  

Und wenn du dir die Ausgabe auf eine evtl vorhandene Freigabe auf deinem eigenen Computer umleitest statt auf Temp auf dem Remotecomputer, kannst du dir die Info gleich ansehen. face-wink

Gruß
emeriks
emeriks 29.05.2017 um 22:00:48 Uhr
Goto Top
Das macht aber dann keinen Sinn, wenn die Befehle direkt aufeinander aufbauen.
114685
114685 29.05.2017 aktualisiert um 22:04:13 Uhr
Goto Top
Richtig. Deshalb schrieb ich ja, dass du Recht hast und habe es auch nur auf sein Beispiel mit IPCONFIG bezogen..
WinLiCLI
WinLiCLI 30.05.2017 um 14:51:21 Uhr
Goto Top
Vielleicht erkläre ich einfach mal mit einem Beispiel was ich machen möchte.

Beispiel:
Ich möchte eine Batch schreiben, die mich abfragt welchen Rechner ich den vornehmen möchte und dann sich mittels PSEXEC mit dem verbindet.
Im Skript steht dann drin:
(Skript aufbau zur vereinfachlichung mittels Text)
Wie heist der PC: (Tippe ich ein)
Echo Kurzen Moment....
Mit DIR kriege soll ich dann alle Verzeichnis angezeigt bekommen.
echo verbindung ist da
Welchen Ordner möchtest du: (Tippe dann den Ordner ein, da ich ja oben mit dir eine Liste bekommen habe)
Ordnerinhalt vom gewünschten Ordner wird angezeigt.

Das ganze möchte ich in einer Batch schreiben. Ist dies möglich oder muss jeder Befehl in einer eigenen Zeile mit PSExec ausgeführt werden?

lg
emeriks
emeriks 30.05.2017 um 15:28:45 Uhr
Goto Top
Das ganze möchte ich in einer Batch schreiben. Ist dies möglich oder muss jeder Befehl in einer eigenen Zeile mit PSExec ausgeführt werden?
Es geht beides. Nur wenn Du letzteres machst, dann muss er für jeden Befehl eine neue PSEXEC-Sitzung aufmachen. Regelst Du das über ein zweites Script, dann hast Du nur eine Sitzung.

Aber, um den Ordnerinhalt anzeigen zu können, muss Du nicht über PSEXEC gehen. Warum nicht sowas wie ...?
dir \\computername\c$\Ordner
WinLiCLI
WinLiCLI 30.05.2017 um 15:40:04 Uhr
Goto Top
Es war nur ein Beispiel.

Momentan habe ich es mit PSExec pro Zeile am laufen. So funktioniert es ganz gut, nur ist das ein blöder Umweg jedesmal.

Ich habe nun festgestellt, dass Variablen habe, die Leerzeichen enthalten.

Ich habe im Skript schon %Variable% in "" gesetzt. Aber das hat so auch nicht funktioniert. Batch bricht ab.

Weis jemand wie man Variablen mit Leerzeichen der CMD übergibt?
114685
114685 30.05.2017 um 15:44:00 Uhr
Goto Top
In meinem ersten Beitrag hatte ich dich gebeten, das fertige Script hier (in Codetags) zu posten.

Offenbar gefällt dir das nicht, also bin ich raus.

Viel Erfolg
venkatesh1993
venkatesh1993 30.05.2017 aktualisiert um 22:26:30 Uhr
Goto Top
Hallo,
ich verstehe nicht, warum du nicht ganz einfach dein Script hier postest und dann weiß jeder genau was du vor hast, aber gut.
Ich benutze auch gerne PSExec um auf einem remote PC via CMD zu verbinden, dazu hab ich folgendes geschrieben:

Datei: remote_cmd.bat
@echo off
:start
set /p pc="Rechnername eingeben: "  
:: wenn Q eingeben wird, wird das Fenster geschlossen
if /I "%pc%" EQU "Q" goto END  
PFAD\PsExec.exe -s \\%pc% cmd.exe
goto start
:end
exit

Dazu musst du einmal PSExec EULA auf deinem Rechner zugestimmt haben. Mit Script bist du dann, sofern du die Berechtigungen hast als SYSTEM User auf dem Remote Computer und kannst die Ordner anzeigen lassen z.B dir C:\
Du KANNST natürlich auch eine Variable im Script dazu bauen.

Hier kannst du ein paar Bsp anschauen: https://ss64.com/nt/psexec.html

LG