Powershellskript via Aufgabenplanung funktioniert nicht
HalliHallo,
ich habe ein simples ShellSkript :
Aufgabenplanung: Beim Anmelden des Benutzers.
Powershell geöffnet. Skript aufgerufen. Tuts. Aufgabenplanung tuts nicht. Jetzt ausführen angeklickt tuts nicht.
Unabhängig von der Benutzeranmeldung gewählt, nicht.
Anderen Benutzer mit Adminrechten. Nichts
Höchste Privilegien gewählt nichts.
Ausführen für von Vista / Server auf Windows 10 geändert nichts.
Programm geändert von c:\scriptname.ps in powershell.exe "c:\scriptname.ps" nichts.
Wie bekomme ich eine simple Aufgabe hin?
mfG
Aloahey
ich habe ein simples ShellSkript :
dir "c:\Backup_Hyper-V" -Directory | ?{$_.CreationTime -lt (get-date).AddDays(-6)} | del -recurse -force
Powershell geöffnet. Skript aufgerufen. Tuts. Aufgabenplanung tuts nicht. Jetzt ausführen angeklickt tuts nicht.
Unabhängig von der Benutzeranmeldung gewählt, nicht.
Anderen Benutzer mit Adminrechten. Nichts
Höchste Privilegien gewählt nichts.
Ausführen für von Vista / Server auf Windows 10 geändert nichts.
Programm geändert von c:\scriptname.ps in powershell.exe "c:\scriptname.ps" nichts.
Wie bekomme ich eine simple Aufgabe hin?
mfG
Aloahey
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6851983813
Url: https://administrator.de/forum/powershellskript-via-aufgabenplanung-funktioniert-nicht-6851983813.html
Ausgedruckt am: 22.12.2024 um 11:12 Uhr
19 Kommentare
Neuester Kommentar
Moin,
Erstmal: In Skripten haben Aliases nichts zu suchen. Aliases sind für die Konsole gedacht. In Skripten schreibt man die Befehle aus. Warum? Aliases können gelöscht werden und stehen dann evtl. in einer anderen Umgebung nicht zur Verfügung. Außerdem sind die Skripte leichter lesbar.
Eines bestimmten Benutzers? Welche Rechte hat er?
geändert nichts.
Normalerweise haben die Skripte die Endung ps1 und nicht ps. Und wie der Kollege schon bemerkte: Powershell.exe ist das Programm. Das Skript ist ein Argument, das mit -command übergeben werden muss. Bei beiden muss der volle absolute Pfad angegeben werden. Dann musst Du wahrscheinlich noch die Execution Policy manipulieren.
hth
Erik
Zitat von @Alojahey:
HalliHallo,
ich habe ein simples ShellSkript :
HalliHallo,
ich habe ein simples ShellSkript :
dir "c:\Backup_Hyper-V" -Directory | ?{$_.CreationTime -lt (get-date).AddDays(-6)} | del -recurse -force
Erstmal: In Skripten haben Aliases nichts zu suchen. Aliases sind für die Konsole gedacht. In Skripten schreibt man die Befehle aus. Warum? Aliases können gelöscht werden und stehen dann evtl. in einer anderen Umgebung nicht zur Verfügung. Außerdem sind die Skripte leichter lesbar.
Aufgabenplanung: Beim Anmelden des Benutzers.
Eines bestimmten Benutzers? Welche Rechte hat er?
geändert nichts.
Programm geändert von c:\scriptname.ps in powershell.exe "c:\scriptname.ps" nichts.
Normalerweise haben die Skripte die Endung ps1 und nicht ps. Und wie der Kollege schon bemerkte: Powershell.exe ist das Programm. Das Skript ist ein Argument, das mit -command übergeben werden muss. Bei beiden muss der volle absolute Pfad angegeben werden. Dann musst Du wahrscheinlich noch die Execution Policy manipulieren.
hth
Erik
Moin,
Nö, der Standardinterpreter für "Skripts" ist die command shell. Deshalb kann man .bat und .cmd da eintragen und .ps1 nicht.
Liebe Grüße
Erik
Zitat von @Alojahey:
Guten Morgen,
vielen Dank für die Antworten. Hm, dann ist die Bezeichnunr sehr verwirrend (Programm/Script ausführen).
Guten Morgen,
vielen Dank für die Antworten. Hm, dann ist die Bezeichnunr sehr verwirrend (Programm/Script ausführen).
Nö, der Standardinterpreter für "Skripts" ist die command shell. Deshalb kann man .bat und .cmd da eintragen und .ps1 nicht.
Liebe Grüße
Erik
Moin,
damit sollte es funktionieren:
https://www.tech-faq.net/powershell-skript-per-aufgabenplanung-ausfuehre ...
Gruß,
Dani
damit sollte es funktionieren:
https://www.tech-faq.net/powershell-skript-per-aufgabenplanung-ausfuehre ...
Gruß,
Dani
Alle meine (geplanten) Skripte werden so ausgeführt:
Programm/Skript:
powershell
-EP Bypass -File "C:\scripts\script.ps1"
Zeig uns doch mal genau wie dein Task aussieht. Kannst ihn auch exportieren und die XML hier posten
Achja,
Programm geändert von c:\scriptname.ps in powershell.exe "c:\scriptname.ps" nichts.
Hier mal ein exportierter Task, der garantiert funktioniert:
https://we.tl/t-3ba10jxm5e
Musst nur den Skriptpfadanpassen.
Moin,
Poste am Besten die XML Datei einer nicht funktionierenden Scheduled Task von dir. Irgendwo muss ein (Logik)fehler ja sein.
Gruß,
Dani
@Dani: Leider Satz mit X...
wir nutzen genau dieses Schema für knapp 20.000 Scheduled Tasks auf Servern von 2012R2 bis 2022 ohne nennenswerte Probleme.Poste am Besten die XML Datei einer nicht funktionierenden Scheduled Task von dir. Irgendwo muss ein (Logik)fehler ja sein.
Gruß,
Dani
Hi,
beim Export-Task sind command und arguments falsch gesetzt.
Setze command aufund arguments auf
und beim Löschen-Task
Versuche es mit dem User
Setze die Tasks auf
Ist es ein Laptop?
-Thomas
beim Export-Task sind command und arguments falsch gesetzt.
Setze command auf
powershell
-EP Bypass -File "C:\Users\Max Mustermann\Backup_HyperV.ps1"
und beim Löschen-Task
-EP Bypass -File "C:\Users\Max Mustermann\del-hyper-v.ps1"
Versuche es mit dem User
NT-Autorität\System
Unabhänging von Benutzeranmeldung ausführen
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
-Thomas
Zitat von @Alojahey:
@thomas
Kein Laptop. Fehler bleibt. Er rennt und rennt. Habe rund 15 Minuten gewartet und dann abgebrochen (ssd, Win11, I7 16 GB RAM)
@thomas
Kein Laptop. Fehler bleibt. Er rennt und rennt. Habe rund 15 Minuten gewartet und dann abgebrochen (ssd, Win11, I7 16 GB RAM)
Der Task läuft immer weiter?
Mach mal ganz oben in deine Skripts:
Start-Transcript "c:\$(Get-Date -Format yyyy-MM-dd_HH-mm).txt"
Moin,
geh auf Los zurück und nimm ein simples PowerShell Skript:
Dieses Skript bindest du genau so ein, wie in meinem Link beschrieben.
1) Das Skript manuell im Kontext eines Benutzers, der Mitglied der Gruppe Administrators ist, ausführen.
2) Das Skript manuell im Kontext eines normal Benutzers bzw. der Benutzer den du für die Scheduled Task vorgesehen hast, ausführen.
3) Das Skript in die Scheduld Task einbinden und nochmals testen.
Gruß,
Dani
geh auf Los zurück und nimm ein simples PowerShell Skript:
Start-Transcript "c:\$(Get-Date -Format yyyy-MM-dd_HH-mm).txt"
Sleep -seconds 10
Stop-Transcript
exit
1) Das Skript manuell im Kontext eines Benutzers, der Mitglied der Gruppe Administrators ist, ausführen.
2) Das Skript manuell im Kontext eines normal Benutzers bzw. der Benutzer den du für die Scheduled Task vorgesehen hast, ausführen.
3) Das Skript in die Scheduld Task einbinden und nochmals testen.
Gruß,
Dani