pat.bat
Goto Top

PowerShell Skript mit Windows Aufgabenplanung starten

Hallo zusammen,
ich bin gerade etwas am verzweifeln.

Ich habe eine Windowsaufgabe erstellt die ein Powershell Skript ausführen soll. Das PowerShell Skript liegt auf einem Netzwerkpfad, wo der Server drauf Zugriff hat.

Eingebunden habe ich das wie folgt unter Aktionen:

Programm/Skript:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Argumente hinzufügen(optional): -command "G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Skripts\StartManager.ps1"

Wenn ich das nun manuell ausführe über die Aufgabenplanung, dann erscheint kurz das Powershell fenster und schließt wieder sofort. Ab und an seh ich auch eine rote Meldung, kann aber nicht lesen was es ist.

Gehe ich nun direkt zum Skript und führe das Skript über den ISE aus, funktioniert alles problemlos. Ich verstehe nicht, warum und welche Probleme die Windows Aufgabenplanung hat.


Zusatz: Ich habe das Gefühl, das es was mit dem Netzwerkpfad zu tun hat. Skripte, die auf dem Desktop des Servers abgelegt sind, werden ohne Probleme ausgeführt.

Content-Key: 482015

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

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: sabines
Lösung sabines 06.08.2019 um 08:25:18 Uhr
Goto Top
Moin,

ändere den Pfad in einen UNC Pfad und teste das dann.
GGfs. muss noch der Kontext des ausführenden Users in der Aufgabenplanung geändert werden.
Das sind die beiden Klassiker.

Gruss
Mitglied: erikro
Lösung erikro 06.08.2019 um 08:39:26 Uhr
Goto Top
Moin,

1. ISE eignet sich nie zum Testen. Teste immer auf einer Shell.
2. Ist das Laufwerk G: im Moment der Ausführung im Kontext des Users, unter dem das ausgeführt wird, vorhanden? Und hat dieser User Leserechte auf das LW G:?
3. Deshalb, wie @sabines schon sagte: In Skripten nie relative Pfade oder Netzwerklaufwerke, sondern immer komplette Pfade und UNC nutzen.

hth

Erik
Mitglied: emeriks
Lösung emeriks 06.08.2019 um 08:45:26 Uhr
Goto Top
Hi,
beim manuellen Testen mal die Option "-NoExit" hinzufügen. Damit bleibt das Fenster stehen und man kann die Meldungen lesen.
powershell.exe -NoExit -command "G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Skripts\StartManager.ps1"  

E.
Mitglied: 140447
Lösung 140447 06.08.2019 aktualisiert um 09:28:48 Uhr
Goto Top
-command "G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Skripts\StartManager.ps1"
Das ist falsch, wenn über Command dann so
-Executionpolicy ByPass -NoProfile -command "&'G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Skripts\StartManager.ps1'"  
Du hast ja Leerzeichen im Pfad und die äußeren Anführungszeichen gelten nur für die CMD innerhalb der PS Session sind die nicht mehr vorhanden und deswegen findet die das Script nicht ...
Außerdem ist zu beachten das gemappte Laufwerke des Users nicht in die Session wandern wenn es in einem anderen User-Kontext läuft!! Hier also besser immer UNC Pfade benutzen und Berechtigungen des verwendeten Users in der Aufgabenplanung auf die Freigabe checken.
Mitglied: Pat.bat
Pat.bat 06.08.2019 um 11:20:10 Uhr
Goto Top
Danke, das mit dem UNC Pfad und dem richtigen Command hat geklappt.