So starten Sie eine App in einer vorhandenen Sitzung

5107
TwistedTech

Wenn eine geplante Aufgabe ausgeführt wird, möchte ich ein Powershell-Fenster auf meinem Desktop öffnen, um die Protokolldatei zu beenden und den Fortschritt zu überwachen. Insbesondere möchte ich, dass die Aufgabe das Fenster auf meinem Desktop öffnet und ausgeführt wird Get-Content C:\LogFile.txt -Wait. Wenn die Aufgabe abgeschlossen ist, möchte ich das Powershell-Fenster schließen.

Gibt es eine Möglichkeit, ein grafisches Fenster unter einem anderen Benutzer zu starten? Von dem, was ich gefunden habe, werden die meisten Befehle unter dem Privileg des angegebenen Benutzers ausgeführt, aber kein Fenster auf ihrem Desktop erstellt.

Noch schöner wäre es, wenn es unter dem Benutzer läuft, der beim Start der Aufgabe angemeldet ist, und nicht unter einem hart codierten Benutzer.

EDIT: Bisher habe ich den Code unten. Ich arbeite bis zu einem gewissen Grad. Es erstellt das Nachlauffenster, aber wenn ich es rufe $p.kill(), bricht es den Psexec-Prozess ab, nicht jedoch den Powershell-Prozess. Kann ich ein Ctrl-CFenster zum Powershell schicken ?

# start tailing the log $psexec = 'c:\psexec.exe' $arguments = '-i powershell.exe -windowstyle maximized -command "& "' $p = start-process $psexec -argumentlist $arguments -passthru # start the task Some-task.exe # kill the tail $p.kill() 
2
Du sagst immer wieder: "Ich würde gerne ...". Wie weit bist du in diesem Skript? Ist das Starten eines Fensters unter einem anderen Benutzer das einzige Problem / die Frage hier? Wutnaut vor 10 Jahren 2
@ Wutnaut Nun, ich habe die Aufgabe, ein Powershell-Skript auszuführen und die Protokolldatei zu erstellen. Derzeit öffne ich die Protokolldatei nur manuell. TwistedTech vor 10 Jahren 0
@ Colyn1337 Ich habe nicht an vielen Dingen versucht, da alles, was ich mir vorstellen kann, nur unter dem Vorrecht des Kontos steht. Ich weiß nicht, wie ich ein grafisches Fenster unter einem anderen Konto starten soll. Deshalb habe ich gefragt. TwistedTech vor 10 Jahren 0

1 Antwort auf die Frage

0
Colyn1337

Zuerst benötigen Sie PSExec.exe, es ist kostenlos und wird von der sys internals-Gruppe bereitgestellt. Sie möchten einen Befehl ähnlich diesem:

psexec \\RemoteComputer "%systemroot%\system32\windowspowershell\v1.0\powershell.exe" -u username -p password -i -h 

Lesen Sie die PSExec-Hilfedatei und spielen Sie mit den Einstellungen herum. Sie interessieren sich am meisten für den Schalter '-i', da er die Sitzung angibt, mit der Sie interagieren möchten. Wenn Sie das '-i' ohne Sitzungs-ID verwenden (wie im Beispiel), wählt psexec nur eine aus. Wenn keine verfügbar ist, wird Sitzung 0 verwendet.

Möglicherweise stellen Sie sogar fest, dass die Cmdlets New-PSSessionund Enter-PSSessionPowershell besser zu dem passen, was Sie benötigen. Führen Sie auf Ihrem Computer in Powershell Folgendes aus:

$Session = New-PSSession -ComputerName computer.domain.com Enter-PSSession -Session $Session 

Wenn Sie diese Befehle ausführen, wird Ihr Terminal auf Ihrem Computer das Terminal auf dem Remote-Computer. Befehle, die Sie in der Remote-Sitzung eingeben, werden auf dem Remote-Computer ausgeführt, und die Ausgabe wird an Ihre zurückgegeben. Wenn Sie fertig sind, geben Sie den Exit-PSSessionBefehl ein, um zu Ihrer eigenen Sitzung zurückzukehren.

Damit das Fenster auf dem Desktop dieses Benutzers angezeigt wird, muss die Sitzungs-ID angegeben werden. Gibt es eine Möglichkeit, die vorhandenen Sitzungen aufzulisten? TwistedTech vor 10 Jahren 0
@TwistedTech, das Operationen in einer anderen Sitzung durchführt, ist eine große Verantwortung. Um diese Verantwortung effektiv zu besitzen, ist ein gewisses Maß an Wissen erforderlich. Nehmen Sie sich etwas Zeit und recherchieren Sie etwas, bevor Sie so etwas versuchen. Colyn1337 vor 10 Jahren 1
Ich kenne. Die Konten sind Dienstkonten für Kioske. Ich übernehme nicht die Sitzung einer anderen Person. (Jemand hat das `session-hijacking'-Tag hinzugefügt. Ich stimme dem wirklich nicht zu, was ich versuche, aber ich habe es trotzdem gelassen.) TwistedTech vor 10 Jahren 0
Obwohl Powershell-Remoting fantastisch ist, möchte ich eigentlich, dass das Fenster erscheint. Mein Ziel ist es, in der Lage zu sein, auf den Bildschirm eines Kiosks zu schauen und zu überprüfen, wo sich die Aufgabe befindet. Die Ausführung der Aufgabe kann bis zu einer Stunde dauern. Ich möchte wissen, was sie tut, ohne das Protokoll auf jedem Rechner öffnen zu müssen. TwistedTech vor 10 Jahren 0
@ TwistedTech, warum können Sie nicht einfach den Status aller Kiosks von einem zentralen Computer aus überwachen? dangph vor 10 Jahren 2
@dangph Sie sind es, aber in diesem Setup müssen die Leute im Feld wissen, was los ist. Sie haben keinen einfachen Zugriff auf den zentralen Server. TwistedTech vor 10 Jahren 0