Benutzer mit den meisten Antworten
Powershell Script über Aufgabenplanung / Start-Process

Frage
-
Hallo,
ich habe ein kleines Powershell-Script geschrieben, dass mir per Robocopy Dateien von a nach b kopiert.
Starte ich das Script manuell oder im ISE funktioniert alles reibungslos.
Starte ich das Script aber über die Aufgabenplanung (per bat-Datei Powershell.exe -ExecutionPolicy Bypass -Command "& 'psscript.ps1'"), wird ein Ordner kopiert/angelegt und dann beendet sich robocopy. Beim nächsten Start der Aufgabe, wird dann der/die Unterordner des zuvor angelegten Ordners angelegt usw.Was ist das Problem?
vG
Antworten
-
Ich habe den Fehler gefunden. Ich hätte den Parameter COPYALL nicht verwenden dürfen. Ist wohl "Macht der Gewohnheit"... der Quell Server ist nämlich ein NAS Laufwerk ohne NTFS...
Mit dem Parameter COPY:DAT funktioniert es wunderbar. Warum es zu diesen seltsamen Auswirkungen nur im "Task Sheduler" kommt, will ich jetzt gar nicht hinterfragen!
Vielen Dank an alle für die Hilfe!
vG- Als Antwort markiert MarkMae Mittwoch, 27. November 2019 06:43
Alle Antworten
-
Da hilft nur ein kleiner Trace.
Gib die Anweisungen zusätzlich in eine Datei aus und packe die Befehle in Try/Catch-Blöcke.
Irgendwo hast du da halt einen Fehler, der das Sript zum Beenden bringt.
https://www.windowspro.de/script/fehlerbehandlung-powershell-erroraction-try-catch-finally
Falls du mit Netzressourcen umgehen solltest, so kann es sein, dass diese im Batch nicht zur Verfügung stehen.
Hierzu musst du erst Netzlaufwerke mit Anmeldung verbinden. -
Was ist das Problem?
Das Problem ist, daß außer Dir niemand weiß, was in Deinem Skript steht.
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq
-
Was ist das Problem?
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Montag, 25. November 2019 15:02
-
Hier mal ein Beispiel wie ich das für mein GPO-Backupscript einrichte (Ja, richtig installiert liegt das in einem Path und braucht keinen Kompletten Pfad), das hat auch PowerShell parameter:
Wenn es interessiert, hier gibt es mehr zu dem Skript und die Einrichtung als geplante Aufgabe.Schtasks /create /RU "Administrator" /RP "password" /SC DAILY /TN "GPO-Backup" /TR "powershell.exe -WindowStyle hidden -ExecutionPolicy Bypass -nologo -noprofile get-GPOBackup.ps1 -BackupPath c:\GPOBackup -KeepDate 90 -PolicyDefinitions" /ST 06:06 /ET 08:00
Viele Grüße
Fabian Niesen
---
Infrastrukturhelden.de
LinkedIn - Xing - Twitter
#Iwork4Dell - Opinions and Posts are my own -
Sorry, hatte vergessen die relevante Scriptzeile mit anzugeben!
Start-Process -FilePath "C:\Windows\System32\robocopy.exe" -ArgumentList $source,$backupFolder,"*.*","/E","/COPYALL"
& Fabian Niesen
danke für den Tipp, aber auch so habe ich das gleiche Ergebnis. Der Task wird auch als "erfolgreich ausgeführt" angezeigt.edit:
OK, das Problem liegt nicht an PowerShell, sondern an RoboCopy. Führe ich den Befehl z.B. per cmd.exe aus funktioniert er einwandfrei, mit der Aufgabenplanung startet RoboCopy kurz und beendet sich dann wieder. Gibt aber die Meldung zurück, dass alles OK ist...
- Bearbeitet MarkMae Dienstag, 26. November 2019 09:48
-
> Ordner kopiert/angelegt
Werden wirklich Daten ins Ziel kopiert oder nur ein Ordner angelegt? Der Unterschied ist relevant, weil wenn ersteres zutrifft, braucht man sich schon mal um den ganzen Komplex "Ist die Quelle verfügbar / Stimmen die Berechtigungen etc)" keine Gedanken machen.
Es wäre in jedem Fall eine gute Idee mal den Exitcode von Robocopy auszulesen. Hier ist ein Beisipiel wie: LINK
Ansonsten, poste doch mal den XML-Export der Aufgabe.
Blog: http://www.bytecookie.de
Powershell Code Manager: Link
(u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort. -
Der ExitCode ist 0
Wenn ich den Task (manuell) ausführe, legt robocopy die oberste Verzeichnisstruktur an. Also zuerst den Quellordner. Beim 2. Ausführen legte er alle Ordner und Dateien an, die sich im Quellordner befinden usw. usw...
Eigentlich ist das hier nun auch das falsche Forum. Es hat definitiv nichts mit PowerShell zu tun. Wenn ich das Script z.B. über den ISE ausführe funktioniert alles problemlos. Das Problem ist der "Task Sheduler"!!! (BS = Server 2019)
Hier mal die XML:<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2019-11-25T13:34:55.421147</Date> <Author>xxx\Admin</Author> <URI>\WindowsServerSicherung</URI> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2019-11-25T05:00:00</StartBoundary> <Enabled>true</Enabled> <ScheduleByWeek> <DaysOfWeek> <Tuesday /> <Wednesday /> <Thursday /> <Friday /> <Saturday /> </DaysOfWeek> <WeeksInterval>1</WeeksInterval> </ScheduleByWeek> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-21-xxx</UserId> <LogonType>Password</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT4H</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>powershell.exe</Command> <Arguments>-ExecutionPolicy Bypass -Command "& 'C:\Scripts\WindowsServerSicherung.ps1'"</Arguments> </Exec> </Actions> </Task>
- Bearbeitet MarkMae Dienstag, 26. November 2019 10:55
-
> Eigentlich ist das hier nun auch das falsche Forum
Ich kann den Thread gerne verschieben. Aber da das starten von PoSh-Skripten via Taskmanager eine häufige Aufgabe ist, passt das schon.
Blog: http://www.bytecookie.de
Powershell Code Manager: Link
(u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.
- Bearbeitet Denniver ReiningMVP, Moderator Dienstag, 26. November 2019 11:35
-
bin halt mittlerweile der Meinung, dass der "Task Sheduler" von MS Server 2019 ein Problem hat.
Mit xcopy funktioniert es auch nicht. Ich habe beide Tools direkt im Task mit Parametern eingetragen. Also komplett ohne PowerShell und auch da ist das Ergebnis das gleiche. Nur bei xcopy wird nicht mal ein Verzeichnis kopiert...
-
Versuch doch die Optionen für robocopy mal am Stück zu übergeben ...
Start-Process -FilePath "C:\Windows\System32\robocopy.exe" -ArgumentList "$source $backupFolder /E /COPYALL"
... und - nur zum Spaß - lässt Du robocopy mal ein Log schreiben.Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
-
Ich habe den Fehler gefunden. Ich hätte den Parameter COPYALL nicht verwenden dürfen. Ist wohl "Macht der Gewohnheit"... der Quell Server ist nämlich ein NAS Laufwerk ohne NTFS...
Mit dem Parameter COPY:DAT funktioniert es wunderbar. Warum es zu diesen seltsamen Auswirkungen nur im "Task Sheduler" kommt, will ich jetzt gar nicht hinterfragen!
Vielen Dank an alle für die Hilfe!
vG- Als Antwort markiert MarkMae Mittwoch, 27. November 2019 06:43