Fragensteller
Task Scheduler führt Skript nicht vollständig aus

Frage
-
Hallo,
ich versuche einen Task zu bauen, der regelmäßig die SQL-Datenbank auf einen anderen Server sichert.
Dazu habe ich zuerst ein T-SQL Skript erstellt, welches das Backup erstellt. Leider scheint es nicht möglich, über dieses Skript direkt auf eine Freigabe oder ein virtuelles Laufwerk zu speichern. Lokal funktioniert es.
Daher speichere ich es in einem Ordner C:\backup und habe ein PowerShell-Skript erstellt, welches schlicht den Inhalt des Ordners auf die Freigabe kopiert, dabei einen einzigartigen Namen erstellt und schließlich den Inhalt von C:\backup löscht. Das funktioniert wunderbar, wenn ich das Skript über PowerShell oder die CMD aufrufe. Im Task Scheduler läuft das Skript zwar durch, jedoch wird der Copy-Befehl nicht ausgeführt, es wird nur gelöscht.
Weiß jemand, woran das liegen kann?
Inhalt des Scripts:
$timestamp = Get-Date -Format o | foreach {$_ -replace ":", "."}
if($Type -eq "full"){
$name = "Z:\SQLBackup"+$timestamp+"-full\"
}
elseif($Type -eq "diff"){
$name = "Z:\SQLBackup"+$timestamp+"-diff\"
}
Copy-Item "C:\backup" $name -recurse
Get-ChildItem -Path C:\backup -Include *.* -Recurse | foreach { $_.Delete()}Aufruf im Task Scheduler:
Programm/Skript: PowerShell
Parameter: -ExecutionPolicy Unrestricted -Command "& C:\Users\Ich\Skripte\DirCopy.ps1 -Type full"
Alle Antworten
-
Am 05.09.2014 schrieb Irolan:
Daher speichere ich es in einem Ordner C:\backup und habe ein PowerShell-Skript erstellt, welches schlicht den Inhalt des Ordners auf die Freigabe kopiert, dabei einen einzigartigen Namen erstellt und schließlich den Inhalt von C:\backup löscht. Das funktioniert wunderbar, wenn ich das Skript über PowerShell oder die CMD aufrufe. Im Task Scheduler läuft das Skript zwar durch, jedoch wird der Copy-Befehl nicht ausgeführt, es wird nur gelöscht.
Weiß jemand, woran das liegen kann?
Inhalt des Scripts:
$timestamp = Get-Date -Format o | foreach {$_ -replace ":", "."}
if($Type -eq "full"){
$name = "Z:\SQLBackup"+$timestamp+"-full\"
}
elseif($Type -eq "diff"){
$name = "Z:\SQLBackup"+$timestamp+"-diff\"
}
Copy-Item "C:\backup" $name -recurse
Get-ChildItem -Path C:\backup -Include . -Recurse | foreach { $_.Delete()}Gibt es das LW Z: denn auch zum Zeitpunkt des ausführens für den
ausführenden Benutzer? Weshalb nimmst Du an der Stelle nicht einen
UNC-Pfad? So haben wir das im Einsatz, funktioniert einwandfrei. Hat
der ausführende Benutzer auch genügend NTFS-Berechtigungen für das
Ziel?
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren- Als Antwort vorgeschlagen Winfried.Sonntag Montag, 8. September 2014 16:27
-
Am 08.09.2014 schrieb Irolan:
Grummel Auf den UNC-Pfad hätt ich selber kommen können. Das funktioniert. Das virtuelle Laufwerk Z: war noch ein Überbleibsel aus dem früheren Versuch, es komplett über T-SQL zu machen. Ich hatte das einfach übernommen.
Hauptsache es funktioniert jetzt, und
Danke.
bitte, gern geschehen. ;)
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren