coolzero
Goto Top

Windows Server Aufgabenplanung Robocopy

Hallo,
ich habe ein kleines PowerShell Skript welches Robocopy aufruft und verschiedene Daten Sichert, wenn ich das Skript per doppelklick starte, läuft es durch, wenn ich es allerdings versuche über die Aufgabenplanung zu starten, dann passiert nichts, die Aufgabenplannung zeigt zwar "Running", aber es geht kein Powershell Fenster auf und es sieht auch nicht so aus als ob wirklich was passiert. Wie kann ich das PowerShell Fenster öffnen lassen um zu sehen was passiert, btw. den Fehler zu sehen?

Unter "Action" rufe ich
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
auf, unter Add-Arguments (optional) dann die PS Datei und den Parameter
Datensicherung Server.ps1 -NoProfile
unter Start in (optional) steht dann noch das Verzeichniss wo sich das PS Skript befindet
C:\Robocopy\

Was mache ich falsch?

Danke
robocopy_actionr
robocopy_conditions
robocopy_general
robocopy_settings
robocopy_trigger

Content-ID: 2109461247

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

Ausgedruckt am: 07.11.2024 um 18:11 Uhr

Crusher79
Crusher79 17.01.2024 aktualisiert um 14:29:04 Uhr
Goto Top
Den oder die Parameter?

Was mit dem Leerzeichen?? Mal in Hochkomma, oder einfach in einen Wort probiert?


-ExecutionPolicy Bypass -File "C:\scripte\Server\CheckAndRestart.ps1"  
ArnoNymous
ArnoNymous 17.01.2024 aktualisiert um 14:40:03 Uhr
Goto Top
Moin,

schon lange her, aber:
- das Leerzeichen aus dem Namen des Skripts solltest du entfernen-
- unter "Start in" müsstest du C:\windows\system32 angeben, denn dort läuft ja die powershell.exe. Kannst du aber auch einfach frei lassen

Gruß
shanogi
shanogi 17.01.2024 um 14:44:03 Uhr
Goto Top
Hallo,
unter Add-Arguments müsste doch eigentlich -command "Pfad zum Script" rein.
Und "Starten in" kann leer bleiben.

Grüße
manuel-r
manuel-r 17.01.2024 um 15:05:35 Uhr
Goto Top
Hallo

Datensicherung Server.ps1 -NoProfile

Da dürfte der Fehler liegen. Probier's mal mit
-ExecutionPolicy -Bypass -File "C:\Pfad\zum\Script\Datensicherung Server.ps1"  

Manuel
Coolzero
Coolzero 17.01.2024 um 15:12:39 Uhr
Goto Top
Zitat von @Crusher79:

Den oder die Parameter?

Was mit dem Leerzeichen?? Mal in Hochkomma, oder einfach in einen Wort probiert?


-ExecutionPolicy Bypass -File "C:\scripte\Server\CheckAndRestart.ps1"  

Hi, das mit dem einen Wort hab ich probiert so
DatensicherungServer.ps1 -NoProfile
aber ohne besserung.

Und auch so geht leider nicht
"DatensicherungServer.ps1" -NoProfile  

Und auch so leider nicht
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

-ExecutionPolicy Bypass -File "C:\Robocopy\DatensicherungServer.ps1"  
Coolzero
Coolzero 17.01.2024 um 15:13:59 Uhr
Goto Top
Zitat von @ArnoNymous:

Moin,

schon lange her, aber:
- das Leerzeichen aus dem Namen des Skripts solltest du entfernen-
- unter "Start in" müsstest du C:\windows\system32 angeben, denn dort läuft ja die powershell.exe. Kannst du aber auch einfach frei lassen

Gruß

Hab ich so angepasst, aber leider wird immer noch kein Powershell fenster geöffnet
bild_2024-01-17_151356563
Coolzero
Coolzero 17.01.2024 um 15:16:27 Uhr
Goto Top
Zitat von @manuel-r:

Hallo

Datensicherung Server.ps1 -NoProfile

Da dürfte der Fehler liegen. Probier's mal mit
-ExecutionPolicy -Bypass -File "C:\Pfad\zum\Script\Datensicherung Server.ps1"  

Manuel

Ich glaube das es damit im Hintergrund läuft, da die Log Datei die ich schreiben lasse gefüllt wird, allerdings wird das Powershell Fenster nicht geöffnet und angezeigt, wie bekomme ich das hin?
manuel-r
manuel-r 17.01.2024 um 15:25:25 Uhr
Goto Top
Hab ich so angepasst, aber leider wird immer noch kein Powershell fenster geöffnet

Warum sollte sich ein Fenster öffnen?

Ich glaube das es damit im Hintergrund läuft

Natürlich tut es das. So ist es auch vorgesehen.
Coolzero
Coolzero 17.01.2024 um 15:45:51 Uhr
Goto Top
Wieso sollte sich keins öffnen? Wenn ich die Skriptdatei doppelt anklicke öffnet sich ja auch eins. Aber wenn das das normale verhalten ist ok, wie bekomme ich es denn dann hin das sich ein Fenster öffnet?

Danke
10138557388
10138557388 17.01.2024 aktualisiert um 15:57:50 Uhr
Goto Top
Zitat von @Coolzero:

Wieso sollte sich keins öffnen?
Weil GUIs nur erscheinen wenn das Skript auch mit den Credentials ausgeführt wird welcher gerade angemeldet ist!! Ohne aktive GUI-Session des Task-Principials keine GUI, absolute Taskplaner Basics!
Ausnahme: Man klaut sich über Impersonation das aktuelle Anmelde-Token und führt es über SYSTEM aus dann kann man auch aus diesem Principal eine GUI in der aktuellen Session erzeugen .

Wenn ich die Skriptdatei doppelt anklicke öffnet sich ja auch eins. Aber wenn das das normale verhalten ist ok, wie bekomme ich es denn dann hin das sich ein Fenster öffnet?
"Nur ausführen wenn angemeldet" auswählen wenn eine GUI gewünscht ist ansonsten GUI aus dem Skript entfernen und es so konzipieren das es auch unsichtbar ohne Abfragen etc. laufen kann!

Fürs logging im Taskplaner nutze Start-Transcript im Skript, dann siehst du das was du in der Konsole auch sehen würdest stattdessen in einer Logdatei deiner Wahl.

Pj.
manuel-r
manuel-r 17.01.2024 um 15:50:24 Uhr
Goto Top
wie bekomme ich es denn dann hin das sich ein Fenster öffnet?

Du kannst den Task umstellen auf "run only when user is logged on", aber dann wird er auch nur dann ausgeführt wenn dieser Benutzer zur geplanten Zeit angemeldet ist.

Manuel
Celiko
Celiko 17.01.2024 um 18:59:38 Uhr
Goto Top
Zitat von @10138557388:
Weil GUIs nur erscheinen wenn das Skript auch mit den Credentials ausgeführt wird welcher gerade angemeldet ist!! Ohne aktive GUI-Session des Task-Principials keine GUI, absolute Taskplaner Basics!
Ausnahme: Man klaut sich über Impersonation das aktuelle Anmelde-Token und führt es über SYSTEM aus dann kann man auch aus diesem Principal eine GUI in der aktuellen Session erzeugen .
Pj.

Hatten wir das Thema nicht erst vor 1-2 Tagen in einer anderen Frage? :D

VG
Dirmhirn
Dirmhirn 17.01.2024 um 20:17:39 Uhr
Goto Top
Noch ein Tipp: Robocopy in einem Task kann langsamer laufen. Du musst den Task als XML exportieren und die Priorität anpassen. Dann wieder importieren.
Soweit ich das noch im Kopf habe.
10138557388
10138557388 17.01.2024, aktualisiert am 18.01.2024 um 08:00:33 Uhr
Goto Top
Zitat von @Celiko:
Hatten wir das Thema nicht erst vor 1-2 Tagen in einer anderen Frage? :D
Jepp, jeden Tag steht einer neuer auf 😀

PowerShell "Login Script" läuft als Scheduled Task nicht
Coolzero
Coolzero 18.01.2024 um 11:45:11 Uhr
Goto Top
Hallo, ja ok, so läuft es zumindest durch, allerdings ist der Ordner nun ein Versteckter Ordner, das soll er aber nicht sein, was mach ich da noch falsch, ich nutze aktuell diese Parameter:

Robocopy $SourceFolder $DestinationFolder /B /COPY:DATSOU /xd "System Volume Information" /xd "$RECYCLE.BIN"  /xf pagefile.sys /xf NTUSER.Dat  /MIR  /a-:sh /fft /LOG:$Logfile /NP /NFL /TEE  /R:3 /W:5  

Dazu kommen bei einigen Dateien noch diese Fehler:
2024/01/18 11:17:12 ERROR 0 (0x00000000)
2024/01/18 11:13:54 ERROR 87 (0x00000057) Changing File Attributes 

Bei ein paar Dateien, könnte es sein, das gerade drauf zugegriffen wird, aber bei denen mit Error 87 ist das eher sehr unwahrscheinlich. Was könnte ich da noch machen?

Danke
10138557388
10138557388 18.01.2024 aktualisiert um 12:15:44 Uhr
Goto Top
Ein aktuell laufendes System ohne Schattenkopie weg zu kopieren ist eine sehr schlechte Idee da geöffnete Datenbanken-Dateien etc. vorher erst ihre Daten auf die Platte flushen sollten, sonst kommt es in der Kopie zu Inkonsistenzen. Erstelle eine Schattenkopie, mounte diese und kopiere die Daten aus der Schattenkopie ins Ziel!
Schattenkopien lassen sich bspw. so per PS anlegen:
([WMICLASS]"root\cimv2:win32_shadowcopy").Create("C:\", "ClientAccessible")  
Oder nutze gleich Tools die fürs Imaging geschaffen wurden wenn du eh die ganze Partition wegsicherst wie bsp. http://www.drivesnapshot.de/de/
Oder z.B. auch mit Bordmitteln
Active Directory-Gesamtstrukturwiederherstellung: Sichern eines gesamten Servers
Oder offline mit dism
Dism /Capture-Image /ImageFile:"D:\backup.wim" /CaptureDir:C:\ /Name:MyImage  

Und für sowas am besten das SYSTEM Principal im Task verwenden.

Besser gleich richtig machen damit später beim Restore-Fall nicht die Tränen fließen weil man eben mit seinem manuellen Backup nicht alles bedacht hat.
Coolzero
Coolzero 18.01.2024 um 12:20:23 Uhr
Goto Top
Hi, wie gesagt, die Error 0 Meldungen könnten tatsächlich mit Zugriffen zusammenhängen, das muss ich mir mal ansehen, allerdings die Error 87 Meldungen nicht, was könnte da das Problem sein?

Komisch ist auch das das gesicherte Verzeichnis nach dem robocopy lauf als Versteckt angezeigt wird, bzw. teilweise auch gar nicht angezeigt wird.....
10138557388
10138557388 18.01.2024 aktualisiert um 12:34:43 Uhr
Goto Top
S. Hinweise zum Task-Principal oben.
Komisch ist auch das das gesicherte Verzeichnis nach dem robocopy lauf als Versteckt angezeigt wird
Du lässt das in der Powershell laufen, da müssen bestimmte Zeichen maskiert oder Parameter mit Anführungszeichen eingeschlossen werden, dazu gehört auch der Dash(-) wie du ihn hier verwendest /a-:sh!

I'm out. 🖖
Coolzero
Coolzero 24.01.2024 um 08:22:17 Uhr
Goto Top
So ich hab es glaub ich gelöst und das Problem war ein etwas anderes, die Platte worauf gesichert werden sollte, war wieso auch immer mit extFS Formatiert wodurch es natürlich Probleme gab mit der Sicherung der Berechtigungen der NTFS Platte, nachdem ich die Sicherungsplatte neu Formatiert habe, läuft nun auch das Skript ohne Probleme durch.

Danke für die ganzen Tips und Hilfen!