none
PowerShell Script via Batch ausführen RRS feed

  • Frage

  • Hallo,

    ich möchte ein PowerShell Script auf einem Windows XP Rechner als geplanten Task ausführen und muss deshalb zwangsweise das PS-Script über ein Batch-Script starten. Dieses Script soll in der Exchange Konsole eines Servers arbeiten. Das Script an sich funktioniert einwandfrei, jedoch die Ausführung aus der Batch nicht.

    Zur Zeit verwende ich dieses Batch Script:

    PowerShell.exe -PSConsoleFile "DATEI\PFAD\EXCHANGESCRIPT1.psc1" #Script soll Exchange Konsole aufrufen, funktioniert einwandfrei
    SET ThisScriptsDirectory=%DATEI\PFAD
    SET PowerShellScriptPath=%ThisScriptsDirectory%SCRIPT1.ps1
    PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs} SCRIPT1.ps1";

    Die Exchange Konsole wird angesprochen, in der CMD Shell wird PowerShell gestartet, allerdings führt er dann das Script nicht aus. Wenn ich dann in der CMD im PowerShell das SCRIPT1.ps1 manuell ausführe, klappt alles so, wie es soll.

    Wie schaffe ich es nun, dass in der PowerShell das SCRIPT1.ps1 ausgeführt wird, ohne es jedes Mal manuell anstarten zu müssen?


    • Bearbeitet t_sebast Montag, 5. Mai 2014 10:08
    Montag, 5. Mai 2014 10:02

Antworten

  • Moin,

    zu Windows XP und nicht mehr supported sag ich mal gar nichts weiter.

    Wird denn der geplante Vorgang im Kontext desselben Benutzers ausgeführt?
    Wohin verweisen die Pfadvariablen?

    Die Deklarationen

    SET ThisScriptsDirectory=%DATEI\PFAD
    SET
    PowerShellScriptPath=%ThisScriptsDirectory%SCRIPT1.ps1

    kommen mir zumindest erst mal ungültig vor, es sei denn Du hast die im realen Skript anders befüllt und jetzt nur Platzhalter eingetragen. Selbst dann fehlt in der zweiten Zeile ein Backslash vor SCRIPT1.ps1, wenn die Variable ThisScriptsDirectory nicht bereits einen abschließenden Backslash enthält.

    Hat das den Task ausführende Benutzerkonto Zugriff? Gemappte Laufwerke und Netzwerkfreigaben sind da immer mal gut für Kummer.

    Viele Grüße
    Olaf


    Mittwoch, 18. Juni 2014 14:40

Alle Antworten

  • Ich habe das obige Script umgebaut und habe nun folgende Codezeile:

    PowerShell.exe -PSConsoleFile "C:\Programme\Microsoft\Exchange Server\Bin\ExShell.psc1" -Command ". 'DATEI\PFAD\EXPORTSCRIPT1.ps1' "
    Wenn ich die .bat über die Batch-Shell ausführe funktioniert alles wunderbar, lasse ich die .bat als geplanten Task ausführen öffnet sich das Consolenfenster einmal kurz und schließt sich direkt wieder, ohne das etwas passiert.

    Montag, 5. Mai 2014 11:58
  • Hi!

    Sofern das Problem weiter existiert, bau doch mal ein 'pause' am Ende des batch-scripts ein.

    PowerShell.exe -PSConsoleFile "C:\Programme\Microsoft\Exchange Server\Bin\ExShell.psc1" -Command ". 'DATEI\PFAD\EXPORTSCRIPT1.ps1' "
    pause


    Viele Grüße, toby

    Mittwoch, 4. Juni 2014 10:24
  • Moin,

    zu Windows XP und nicht mehr supported sag ich mal gar nichts weiter.

    Wird denn der geplante Vorgang im Kontext desselben Benutzers ausgeführt?
    Wohin verweisen die Pfadvariablen?

    Die Deklarationen

    SET ThisScriptsDirectory=%DATEI\PFAD
    SET
    PowerShellScriptPath=%ThisScriptsDirectory%SCRIPT1.ps1

    kommen mir zumindest erst mal ungültig vor, es sei denn Du hast die im realen Skript anders befüllt und jetzt nur Platzhalter eingetragen. Selbst dann fehlt in der zweiten Zeile ein Backslash vor SCRIPT1.ps1, wenn die Variable ThisScriptsDirectory nicht bereits einen abschließenden Backslash enthält.

    Hat das den Task ausführende Benutzerkonto Zugriff? Gemappte Laufwerke und Netzwerkfreigaben sind da immer mal gut für Kummer.

    Viele Grüße
    Olaf


    Mittwoch, 18. Juni 2014 14:40