c64b311ee9
Goto Top

Tscon.exe 1 dest:console

Hallo,

gibt es eine Möglichkeit folgenden Befehl verzögert auszuführen? (tscon.exe 1 /dest:console )

tscon.exe 1 /dest:console -t 60 hat leider nicht funktioniert...

Sinn und Zweck des ganzen ist es, eine Power Point Präsentation in der Empfangshalle aufzurufen, das "Log-off Script" auszuführen und die Präsentation läuft weiter.
Leider beendet er so direkt die RDP Sitzung und ich habe keine Chance, die Präsentation vorher zu starten.

Vielen Dank!

Content-ID: 285315

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

Ausgedruckt am: 08.11.2024 um 05:11 Uhr

beidermachtvongreyscull
beidermachtvongreyscull 12.10.2015 um 10:36:51 Uhr
Goto Top
Ich glaube zu verstehen.

Du hast nen Windows_Rechner, der eine Powerpoint-Präsi zeigen soll.
Du loggst Dich mittels RDP ein, um die zu starten und dann wieder aus in der Hoffnung, dass die Powerpoint dennoch rennt.
Warum legst Du stattdessen nicht den Startbefehl in den "Geplanten Tasks" an?

Ist doch viel einfacher.
c64b311ee9
c64b311ee9 12.10.2015 um 11:06:33 Uhr
Goto Top
Ja also folgendes:

Der Rechner hängt am TV der in der Empfangshalle hängt. Die Mitarbeiter( 2 Stockwerke drüber) sollen die Präsentation ändern und den Kundennamen eintragen. Damit die nicht jedes Mal vor das Teil rennen müssen, will ich das per RDP machen. Und die geänderte Fassung in den Autostart schieben und den Rechner nach jeder Änderung neustarten müssen finde ich einfach nicht praktisch.
beidermachtvongreyscull
beidermachtvongreyscull 12.10.2015 um 11:35:11 Uhr
Goto Top
Auch die Aktualisierung ließe sich scriptgesteuert machen.
c64b311ee9
c64b311ee9 12.10.2015 um 13:49:14 Uhr
Goto Top
Okay und verrätst du mir auch etwas genauer wie du das ganze realisieren würdest?
122990
122990 12.10.2015 um 13:58:33 Uhr
Goto Top
Powerpointpräsentation aktualisieren

Oder einfach die Präsi aktualisieren (speichern) und dann via VBS/CMD/Powershell, die alte Präsi auf dem System killen und neu starten.

Gruß grexit
beidermachtvongreyscull
beidermachtvongreyscull 12.10.2015 aktualisiert um 14:01:53 Uhr
Goto Top
Wie wäre es mit folgendem:
http://venussoftcorporation.blogspot.de/2010/05/thefolderspy.html

Das Progi ist klein und in .NET geschrieben und Freeware.
Es überwacht Dateien auf mögliche Änderungen und kann dann ein entsprechendes Script abfeuern.

Ein Zweizeiler für das Script dürfte reichen
@echo off
taskkill /F /IM POWERPNT.EXE /T
Pfad zur\powerpnt.exe /s PFad_zur\Präsentation.pptx


Die erste Zeile unterdrückt die Scriptbefehle .
Die zweite schmeißt ein laufendes Powerpoint raus oder eben nicht.

Dieses Script vom FolderSpy aufgerufen sollte Dir helfen.
122990
122990 12.10.2015 aktualisiert um 18:25:52 Uhr
Goto Top
Oder auch ohne externe Tools direkt mit Powershell:
$folder = 'c:\Kundenpräsentationen'  
$filter = 'Kunde*.pptx'  
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName,LastWrite'}   

Get-EventSubscriber PPTXWatcher -EA SilentlyContinue | Unregister-Event

Register-ObjectEvent $fsw Created -SourceIdentifier PPTXWatcher -Action { 
    $fullpath = $Event.SourceEventArgs.FullPath
    Get-Process -Name powerpnt -EA SilentlyContinue | stop-process -force
    & "C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE" /s "$fullpath"  
}
write-host "Überwache Ordner auf neue Präsentationen..."  
while($true){
    sleep(1)
}
Überwacht einen Ordner auf neue Dateien im Format Kunden*.pptx. Wird eine eine neue Datei im Ordner erstellt wird Powerpoint beendet und die neue pptx verwendet.

Gruß grexit
beidermachtvongreyscull
beidermachtvongreyscull 12.10.2015 um 15:14:26 Uhr
Goto Top
Den würde ich empfehlen.
Der ist schöner.
c64b311ee9
c64b311ee9 20.10.2015 um 14:13:27 Uhr
Goto Top
Hallo,

leider komme ich erst jetzt dazu, dass zu testen! Aber vielen vielen Dank für die Mühe, die Ihr Euch schon gemacht habt!
Habe einen Ordner unter C: mit dem namen Kundenpräsentationen angelegt, die Power Point Präsentation umbenannt in Kunde.
Und das pshell script ausgeführt. Leider erhalte ich folgende Fehlermeldung.

New-Object : Exception calling ".ctor" with "2" argument(s): "The directory name c:\Kundenpräsentationen is invalid."  
At C:\Kundenpräsentationen\kunden.ps1:3 char:8
+ $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{I ...
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Register-ObjectEvent : Cannot bind argument to parameter 'InputObject' because it is null.  
At C:\Kundenpräsentationen\kunden.ps1:5 char:22
+ Register-ObjectEvent $fsw Created -SourceIdentifier PPTXWatcher -Acti ...
+                      ~~~~
    + CategoryInfo          : InvalidData: (:) [Register-ObjectEvent], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RegisterObj
   ectEventCommand
122990
122990 20.10.2015 um 22:58:23 Uhr
Goto Top
"The directory name c:\Kundenpräsentationen is invalid."
Typisch, Script nicht im Unicode- oder Umlaut kompatiblen Format gespeichert ...
c64b311ee9
c64b311ee9 21.10.2015 um 07:14:32 Uhr
Goto Top
Ah okay, hatte es mit Notepad++ gleich als powershell script gespeichert. Dann probiere ich das später nochmal, vielen Dank!
Wie hattest du gedacht soll das ablaufen mit dem Script? Über die Aufgabenplanung oder Autostart oder manuell starten?
c64b311ee9
c64b311ee9 21.10.2015 um 08:11:44 Uhr
Goto Top
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
2      PPTXWatcher                     NotStarted    False                                  ...
Ueberwache Ordner auf neue Praesentationen...


Also das Script läuft, aber es passiert leider nichts...
Muss ja alles garnicht vollautomatisiert ablaufen...
Ich habe gedacht es ist zumutbar auf einen "Logoff" Button nach getätigter Änderung zu drücken mit tscon.exe 1 /dest:console als Befehl im Hintergrund und verzögert 1 Minute später abgemeldet zu werden. Sollte doch zum Starten der PowerPoint Präsi mehr als ausreichen.
122990
122990 21.10.2015 um 10:35:19 Uhr
Goto Top
Zitat von @c64b311ee9:
Wie hattest du gedacht soll das ablaufen mit dem Script? Über die Aufgabenplanung oder Autostart oder manuell starten?
Aufgabenplanung wäre das Mittel der Wahl.
122990
Lösung 122990 21.10.2015, aktualisiert am 22.10.2015 um 15:39:47 Uhr
Goto Top
Also das Script läuft, aber es passiert leider nichts...
Das Skript überwacht einen Ordner auf neue Dateien im Format Kunde*.pptx, also bspw. Kunde_Meier.pptx. Wenn also eine neue Datei in diesem Format in dem Ordner landet wird PP automatisch geschlossen und diese neue Datei im Präsentationsmodus gestartet. Es muss jeweils immer eine Datei mit neuem Namen in den Ordner geschoben werden weil sich Präsentationen wenn sie laufen, nicht im Dateisystem ersetzen lassen.
Der Pfad zum Ordner muss einen Laufwerksbuchstaben im lokalen System haben, UNC-Pfade gehen nicht !
Wenn du das beachtest läuft das einwandfrei ...

Mehr Support von mir dazu gibts nur gegen Bares.
Viel Erfolg.

Gruß grexit
c64b311ee9
c64b311ee9 22.10.2015 um 15:43:26 Uhr
Goto Top
Hey super! Vielen Dank!

genau das, was ich mir vorgestellt habe! Danke Danke!
Leider öffnet er Power Point immer im "Hintergrund" und die Taskleiste schließt sich nicht...
Habe es nun so gelöst, dass die Taskleiste automatisch ausgeblendet wird. Vielleicht hat jemand ja ne "elegantere" Lösung?
122990
122990 22.10.2015 aktualisiert um 19:37:38 Uhr
Goto Top
Zitat von @c64b311ee9:
genau das, was ich mir vorgestellt habe! Danke Danke!
Leider öffnet er Power Point immer im "Hintergrund" und die Taskleiste schließt sich nicht...
Habe es nun so gelöst, dass die Taskleiste automatisch ausgeblendet wird. Vielleicht hat jemand ja ne "elegantere" Lösung?
Man kann das Powershell-Fenster beim Start des Skripts unsichtbar machen und Das PP Fenster in den Vordergrund holen:

$folder = 'c:\Kundenpräsentationen'  
$filter = 'Kunde*.pptx'  
$showWindowAsync = Add-Type –memberDefinition @” 
[DllImport("user32.dll")]   
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
“@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

# Hide Powershell console window
[void]$showWindowAsync::ShowWindowAsync((Get-Process –id $pid).MainWindowHandle, 2)

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName,LastWrite'}   

Get-EventSubscriber PPTXWatcher -EA SilentlyContinue | Unregister-Event

Register-ObjectEvent $fsw Created -SourceIdentifier PPTXWatcher -Action { 
    $fullpath = $Event.SourceEventArgs.FullPath
    Get-Process -Name powerpnt -EA SilentlyContinue | stop-process -force
    # start PP
    $proc = Start-Process "C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE" -ArgumentList "/s `"$fullpath`"" -WindowStyle Maximized -PassThru  
    sleep(1)
    # bring PP window to front maximized
    [void]$showWindowAsync::ShowWindowAsync($proc.MainWindowHandle, 3)

}
write-host "Überwache Ordner auf neue Präsentationen..."  
while($true){
    sleep(1)
}