Per SSH auf einem Windows PC ein Programm im Vordergrund starten
Hallo
Ich habe einen Windows 10 PC im Netzwerk, den ich per SSH Befehl (mit Bitvise Server auf dem W10-PC) steuern will.
Aber ein Programm, das ich damit starte ist und bleibt im Hintergrund.
Ich hätte gerne einen Befehl, wie ich ein per SSH gestartetes Programm im Vordergrund, also für den angemeldeten Benutzer, ausführen kann.
Ich verwende als SSH-Login die selben Logindaten wie für den gerade angemeldeten Benutzer auf Windows 10 Pro.
Der Windows PC (ein Sony SVF142C29M) dient als Medien-PC. Der ist am Beamer angeschlossen und per SSH-Befehle vom Handy aus (App: Smart Command SSH) kann ich ihn steuern.
Nein, ich bin per Suche nicht fündig geworden. Fand nur einen Befehl wie Export DISPLAY =:0 was wohl nichts mit Windows zu tun hat.
Danke
franc
Ich habe einen Windows 10 PC im Netzwerk, den ich per SSH Befehl (mit Bitvise Server auf dem W10-PC) steuern will.
Aber ein Programm, das ich damit starte ist und bleibt im Hintergrund.
Ich hätte gerne einen Befehl, wie ich ein per SSH gestartetes Programm im Vordergrund, also für den angemeldeten Benutzer, ausführen kann.
Ich verwende als SSH-Login die selben Logindaten wie für den gerade angemeldeten Benutzer auf Windows 10 Pro.
Der Windows PC (ein Sony SVF142C29M) dient als Medien-PC. Der ist am Beamer angeschlossen und per SSH-Befehle vom Handy aus (App: Smart Command SSH) kann ich ihn steuern.
Nein, ich bin per Suche nicht fündig geworden. Fand nur einen Befehl wie Export DISPLAY =:0 was wohl nichts mit Windows zu tun hat.
Danke
franc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 539090
Url: https://administrator.de/contentid/539090
Ausgedruckt am: 16.11.2024 um 22:11 Uhr
8 Kommentare
Neuester Kommentar
psexec mit Parameter -i benutzen dann wird das Programm in der Desktop-Session ausgeführt.
Copyright (C) 2001-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
PsExec executes a program on a remote system, where remotely executed console
applications execute interactively.
Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]
-a Separate processors on which the application can run with
commas where 1 is the lowest numbered CPU. For example,
to run the application on CPU 2 and CPU 4, enter:
"-a 2,4"
-c Copy the specified program to the remote system for
execution. If you omit this option the application
must be in the system path on the remote system.
-d Don't wait for process to terminate (non-interactive).
-e Does not load the specified account's profile.
-f Copy the specified program even if the file already
exists on the remote system.
>>>>>>>>>>>>>>>>
-i Run the program so that it interacts with the desktop of the
specified session on the remote system. If no session is
specified the process runs in the console session.
<<<<<<<<<<<<<<<<<
-l Run process as limited user (strips the Administrators group
and allows only privileges assigned to the Users group).
On Windows Vista the process runs with Low Integrity.
-n Specifies timeout in seconds connecting to remote computers.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
-s Run the remote process in the System account.
-u Specifies optional user name for login to remote
computer.
-v Copy the specified file only if it has a higher version number
or is newer on than the one on the remote system.
-w Set the working directory of the process (relative to
remote computer).
-x Display the UI on the Winlogon secure desktop (local system
only).
-priority Specifies -low, -belownormal, -abovenormal, -high or
-realtime to run the process at a different priority. Use
-background to run at low memory and I/O priority on Vista.
computer Direct PsExec to run the application on the remote
computer or computers specified. If you omit the computer
name PsExec runs the application on the local system,
and if you specify a wildcard (\\*), PsExec runs the
command on all computers in the current domain.
@file PsExec will execute the command on each of the computers listed
in the file.
program Name of application to execute.
arguments Arguments to pass (note that file paths must be
absolute paths on the target system).
Doch geht einwandfrei.
Was für einen Unterparameter erwartet denn der Parameter -i ? Also was wäre die Nummer der Session die gerade angemeldet ist?
Steht doch da, wenn du keinen Parameter mitgibst wird die Konsolen-Desktop-Session verwendet, also die wenn man sich direkt vor Ort am Host anmeldet. Wenn du stattdessen z.B. per RDP mit dem Remote Host verbunden wärst und dort das Programm interaktiv laufen soll wäre es eine andere Session, die Session ID bekommst du dann mit qwinsta oder auch query userVielleicht ist das mein Fehler, dass ich da nichts angebe und dann verbindet psexec sich mit der Konsole, das ist ja vielleicht falsch?
Wie gesagt, wenn lokal angemeldet braucht es keinen, wenn per RDP in anderer Session dann diese angebenEDIT: vielleicht geht der -i Parameter auf Windows 10 einfach nicht mehr, also vielleicht erlaubt W10 das nicht?
Doch geht nach wie vor einwandfrei, hier getestet!Zitat von @franc:
Langsam ahne ich warum: psexec ist wohl gar nicht dafür gedacht, über ssh auf dem remote PC ausgeführt zu werden, sondern anstatt ssh. Von PC1 mit psexec und irgendein Programm als Parameter auf PC2.
Nein, psexec macht das auch alles lokal, das ist egal.Langsam ahne ich warum: psexec ist wohl gar nicht dafür gedacht, über ssh auf dem remote PC ausgeführt zu werden, sondern anstatt ssh. Von PC1 mit psexec und irgendein Programm als Parameter auf PC2.
Wenn du in der Konsole nicht warten willst bis das Programm beendet ist, füge den Parameter -d hinzu dann wird das Programm ausgeführt und die Kommendozeile kehr direkt zurück.
Bei manchen Rechnern musst du noch die lokale Maschine als Parameter hinzufügen
psexec \\127.0.0.1 -d -i "c:\Program Files\VideoLAN\VLC\vlc.exe"
Mein Problem ist aber, dass ich gar keinen PC zum Steuern habe, sondern einen Mac. Psexec gibt es auf dem Mac ja gar nicht.
Auf dem steuernden Rechner brauchst du es ja auch nicht, das muss nur auf der Windows Kiste liegen, du bist dort ja per SSH verbunden!Wie genau hast du es getestet, also von wo mit was und welchem von psexec ausgeführtem Programm?
Per SSH auf der Winblows Kiste eingeloggt und dann den Rechner gestartet, voila calculator comes up. Habe ich aber auch mit VLC mal testweise probiert, geht ebenfalls.Guckst du
Das selbe dann noch mal über einen SSH-Tunnel mit umgeleiteten Remoteverwaltung Ports der Windows Kiste, ebenfalls erfolgreich. Alles auf ein aktuelles Windows 10 Enterprise Target mit dem integrierten OpenSSH-Server von W10.
Ansonsten liegt es vermutlich an deiner genutzten SSH-Server Software.
Für solche Szenarien habe ich mir selbst mal einen Dienst geschrieben der auf Remote-Befehle an einem Port lauscht und dort meine Befehle entgegen nimmt, einfacher TCP-Listener der dann die Befehle in der lokalen Konsole ausführt. Kannst du dir mit fast jeder Programmier- oder Skriptsprache auch selber bauen ...
Alternativ kannst du dir auch einen Taskscheduler-Task basteln der die jeweiligen Programme im Kontext des Users ausführt und den du dann per Remote antriggerst, das wäre eine weitere Möglichkeit.
schtasks /create /TN StartVLC /TR "C:\Program Files\VideoLAN\VLC\vlc.exe" /SC ONCE /ST 00:00
schtasks /run /tn StartVLC
--
p.s. man kann auch alles in eine Antwort packen