Powershell Script als geplanten Task

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/powershell-script-als-geplanten-task_233142/page_1 - zur Vollversion wechseln!


Umlüx schrieb am 07.01.2013 um 11:40

ich hab ein kleines Powershell Script welches ich jede stunde per geplanten Task laufen lasse.
das unschöne daran ist: jedesmal poppt dabei kurz ein schwarzes konsolenfenster auf. gibt es eine möglichkeit das irgendwie weg oder in den hintergrund oder minimiert zu bekommen? mit -WindowStyle Hidden hab ichs schon probiert, funktioniert aber leider nicht :(

Code:
powershell.exe -WindowStyle Hidden &'C:\tools\script.ps1'


rider schrieb am 07.01.2013 um 12:15

Powershell V1:
http://www.aspnet-answers.com/micro...le-windows.aspx

Powershell V2:
http://blogs.msdn.com/b/powershell/...powershell.aspx

hth


Römi schrieb am 07.01.2013 um 12:36

ich kenne das Problem... selbst wenn man hidden setzt popt das fenster zumindest kurz auf bevor es versteckt wird.
Eine Lösung habe ich nicht, das einfachste ist es den task unter einem anderen User laufen zu lassen (zb system) dann bekommt man in der eigenen Session nichts davon mit.

(das gleiche thema)
http://stackoverflow.com/questions/...laying-a-window


XXXprod schrieb am 07.01.2013 um 13:08

Wenn du den Windows-Task unter einem anderen User ausführen kannst, brauchst du ihn nur als "System" ausführen lassen. Dann siehst du ihn als User auch nie.

Hier noch ein Link dazu: http://www.mickgenie.com/windowsrun...th-system-user/

Lg, XXX


Umlüx schrieb am 07.01.2013 um 13:12

das script steuert ein programm, welches am desktop des angemeldeten user läuft. also mit systemuser wirds dann wohl glaub ich weniger gehen.
aber danke!


Römi schrieb am 07.01.2013 um 13:34

Okay, das ist dann blöd.
Falls du einen Weg findest poste es bitte.


Umlüx schrieb am 07.01.2013 um 14:14

es scheint sowieso nichtmal das powershell fenster zu sein, sondern der taskplaner an sich (taskeng.exe)


XXXprod schrieb am 07.01.2013 um 14:22

Ich hab ein kleines .NET Tool gebastelt, dass einen Command und Argumente entgegen nimmt und dem man optional sagen kann, dass es das Outputwindow nicht anzeigen soll:click here (Speichern auf der Platte und .txt löschen)

Code dazu(in C#):

Code: CSHARP
using System.Diagnostics;
using System.Linq;
using System.Windows.Forms;

namespace RunCommand
{
    class Program
    {
        static void Main(string[] args)
        {
            const string cmdLabel = "-cmd:";

            string command = args.Where(arg => arg.StartsWith(cmdLabel))
                .Select(arg => arg.Substring(cmdLabel.Length))
                .SingleOrDefault();

            if (args.Length == 0 || command == null)
            {
                MessageBox.Show("Programmaufruf: RunCommand.exe -cmd:MeineAnwendung.exe -arg:\"enter your arguments here\" -hide(optional)",
                    "RunCommand", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }


            const string argLabel = "-arg:";

            string arguments = args.Where(arg => arg.StartsWith(argLabel))
                .Select(arg => arg.Substring(argLabel.Length))
                .SingleOrDefault();

            ProcessStartInfo startInfo = (arguments == null)
                ? new ProcessStartInfo(command)
                : new ProcessStartInfo(command, arguments);



            const string hideLabel = "-hide";

            bool hideWindow = args.Any(arg => arg.Equals(hideLabel));

            if (hideWindow)
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;

            Process.Start(startInfo);
        }
    }
}

Lg, XXX


//Edit: Deinen Shell Aufruf müsstest du dann mit folgender Zeile erledigen können:

Code:
RunCommand.exe -cmd:powershell.exe -arg:"C:\\tools\\script.ps1" -hide


Umlüx schrieb am 08.01.2013 um 08:51

danke. solche ähnlichen tools hab ich auch noch gefunden.
hilft leider alles nichts. das script selbst erscheint wie gesagt eh nicht. die konsole gehört zum taskplaner selber... das wird man nicht wegbekommen.

hab das problem jetzt notgedrungen durch anderes task timing umgangen.


Römi schrieb am 08.01.2013 um 22:49

Verstehe ich nicht ganz. Der TaskScheduler startet ja nur irgendwas, da geht normal kein Konsolenfenster auf.

Das Problem ist imo dass Powershell das "Hidden" erst anwendet sobald sie fertig geladen ist - was halt doch etwas dauert.
wenn du im Run Dialog einfach zb:

powershell -Windowstyle Hidden -Command "sleep 10"

eingibst bekommst du kurz ein fenster, bis das Hidden greift.

Wenn das vom XXXprod funktioniert sollest du das damit eigentlich lösen können.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025