Windows-Sitzungs-ID für „PSExec -i“ dynamisch abrufen

Windows-Sitzungs-ID für „PSExec -i“ dynamisch abrufen

Ich versuche, eine PowerShell-Zeile zu schreiben, um ein Programm remote von einem Linux-Rechner auf einen Windows-Rechner auszuführen, indem ich einen PSExec-Befehl über SSH sende. Wenn ich die Sitzungs-ID manuell abfrage und fest einprogrammiere, funktioniert es, aber die ID ändert sich, also möchte ich sie dynamisch abrufen.

Der aktuelle Befehl lautet:

ssh [email protected] "psexec '\\\\192.168.1.3' -i Invoke-Command -ScriptBlock {query session | grep user | grep -o [0-9]} -s $prgm"

Leider erhalte ich beim Ausführen des Skripts die folgende Fehlermeldung:

The system cannot find the file specified.
Starting Invoke-Command on 192.168.1.3....1.3...
PsExec could not start Invoke-Command on 192.168.1.3:
Binary file C:\Users\user\Desktop\Games\StepMania\Program\StepMania.exe matches

Der Dateipfad ist auf Code früher im Skript zurückzuführen. Es wird versucht, ein Skriptargument mit einem Pfad auf dem Windows-Computer abzugleichen, den es aus einer Textdatei abgerufen hat. Ich kann das gesamte Skript einfügen, wenn Sie der Meinung sind, dass es erforderlich ist.

Antwort1

Ich habe dies nicht mit PSExec versucht, aber um die aktuelle PID eines gestarteten Prozesses abzurufen, ist es ganz einfach:

$process = Start-Process -FilePath "notepad" -PassThru
"Process Id is $($process.Id)"

Beachten Sie auch, dass PowerShell über eine Standardvariable verfügt, die die aktuelle Prozess-ID enthält.

$pid

Hier ist jedoch eine Antwort, die besagt, dass Sie die Zahlung auf diese Weise über psexec erhalten können, ganz zu schweigen von SSH zu einem scheinbar Linux-Ziel. Beachten Sie, dass es sich hier immer noch um Windows-zu-Windows-Rechner handelt, im Gegensatz zu Ihrer SSH-Sitzung zu einer scheinbar Linux-Box.

Holen Sie sich die Prozess-ID nach dem Starten von psexec

& psexec -s -d -i $SessionID \\$PCname $Program $FilePath\$FileName |
   Select-String 'process ID (\d+)' | 
   ForEach-Object {$_.Matches.Groups[1].Value}

Antwort2

ssh [email protected] "psexec '\\\\192.168.1.3' powershell.exe -Command \"&{query session | grep user | grep -o [0-9]}\" -s $prgm"

Ich bin nicht ganz sicher, wofür Sie den Parameter -s „Kleinbuchstaben“ bei SSH verwenden, da in diesem Parameter keine Werte akzeptiert werden. Meinten Sie -S „Großbuchstaben“? SSH-Befehlszeile

In welchem ​​Fall

ssh -S $prgm [email protected] "psexec '\\\\192.168.1.3' powershell.exe -Command \"&{query session | grep user | grep -o [0-9]}\""

Wenn Sie den Schalter -s von PsExec meinten, unterstützt auch dieser die Übergabe von Werten an den Parameter nicht …

verwandte Informationen