Skript zum Kopieren per Aufgabenplanung: Berechtigungsprobleme

Rickmer

Fleet Admiral
Registriert
Sep. 2009
Beiträge
20.563
Moin,

ich habe etwas das mich verwirrt: Ich habe ein Skript gebastelt, das per Powershell Robocopy aufruft um aus mehreren Ordnern Dateien zu verschieben.

Funktioniert auch prima, wenn ich's manuell aufrufe.


Aber ich würde das gerne aus der Aufgabenplanung machen. Der eingestellte User ist derselbe User den ich auch nutze wenn ich's manuell ausführe.
Trotzdem kommt es dann dazu, dass das Powershell Skript Ordner einfach nicht sieht und auch PowerShell mit Exit Code 16 aussteigt (was ja auf Berechtigungsprobleme hinweist).

Nur, wenn ich die Berechtigungen (auch spezifisch von Ordnern die Probleme gemacht hatten, ich hab ein wenig Logging im Skript drin) nachschaue scheint alles zu stimmen.


Der genutzte User - der auch in der Aufgabenplanung angegeben ist - ist übrigens ein Administrator, falls das von Relevanz ist.


Hat wer einen Tipp für mich?
 
Du kannst ja im Skript mal ausgeben lassen, welcher User das zur Laufzeit wirklich ist?
 
Hab's grade getestet, aber es kommt der korrekte User zum Einsatz, zumindest wenn ich mit diesem Code-Schnipsel das auslese:

Code:
$username = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
NewEventlog -Type "Error" -Id "11003" -Message "The current User is $username also known as $env:USERNAME"
Das fragt den Username ja auch gleich über zwei verschiedene Methoden ab... (und ja, Type Error ist jetzt falsch, aber ich konnte mir nicht die Mühe machen das für's Test-Skript umzuschreiben)
Ergänzung ()

Ein ähnliches Problem hatte ich übrigens beim Prüfen ob der Zielpfad verfügbar ist:

get-psdrive funktioniert beim Aufruf über Umweg Aufgabenplanung nämlich irgendwie anders als beim Direktaufruf
Netzlaufwerke werden da nicht erkannt wenn ich den Umweg über die Aufgabenplanung mache
Das hatte dazu geführt, dass die if-Klausel die das Skript abbrechen soll wenn das NAS nicht verfügbar ist immer ausgelöst wurde

mit Test-Filepath hat's dann geklappt, aber das war auch ein weiteres 'wtf' für den Tag
 
Zuletzt bearbeitet:
Netzlaufwerk? Die sind nur im jeweiligen Kontext verfügbar wenn du sie mountest (Admin/User). Log doch einfach mal die Ausgabe von dem Skript mit, dann siehst du was ist.
 
Na was ist das denn jetzt für ein Pfad? Netzlaufwerk oder lokal?
Wenn ersteres: das musst du immer erst mappen lassen. UNC-Pfad habe ich glaube ich auch mal gemacht, meine mich zu erinnern dass das ging.
Oder benötigst du Adminrechte für den Ordner? Dann gibt es ein Häkchen "mit erhöhten Rechten ausführen" oder so ähnlich.
 
Yuuri schrieb:
Die sind nur im jeweiligen Kontext verfügbar wenn du sie mountest (Admin/User)
Der Kontext ändert sich nicht, es geht immer um User #Domänenadmin
Das ist ja was mich verwirrt

Enurian schrieb:
Oder benötigst du Adminrechte für den Ordner? Dann gibt es ein Häkchen "mit erhöhten Rechten ausführen" oder so ähnlich.
Ist schon von Anfang an gesetzt gewesen, sollte aber in dem Fall auch nicht nötig sein um die Ordner nur zu sehen, da die Usergruppe für Domänenadmins auch explizit Rechte auf alle entsprechenden Ordner hat

Enurian schrieb:
Wenn ersteres: das musst du immer erst mappen lassen. UNC-Pfad habe ich glaube ich auch mal gemacht, meine mich zu erinnern dass das ging.
Der Pfad ist dauerhaft gemappt, das wollte auch nicht wenn ich mit angemeldetem User das ausgeführt habe über 'jetzt ausführen'

Wie geschrieben ist das auch garnicht das Problem - da habe ich ja den richtige(re)n Befehl schon gefunden.
 
Rickmer schrieb:
Mit Kontext ist gemeint, dass die Aufgabenplanung den User unabhängig von deiner aktuellen Anmeldung verwendet. Dementsprechend werden auch keine Mappings von Netzlaufwerken vorhanden sein.
Rickmer schrieb:
Der Pfad ist dauerhaft gemappt
Nein, ist er nicht. Das macht Windows für dich, wenn du dich anmeldest. Die Aufgabenplanung tut das nicht, wenn sie die Aufgabe ausführt.

Logge einfach mal den kompletten Output vom Skript und Robocopy, dann siehst du sicher schnell was los ist.
 
Hmm, grade mal versucht...

Das Skript selbst sieht jetzt auch die Ordner, soweit sogut.


Robocopy derweil...:
(Ich hatte jetzt diesen Befehl ins Powershell-Skript eingebunden)

Code:
Try
{
    New-PSDrive -Name "Q" -PSProvider "FileSystem" -Root "\\acs-nas02\Archiv"
    NewEventlog -Type "Information" -Id "11000" -Message "Quelle wurde gemappt"
}

Catch
{
    NewEventlog -Type "Error" -Id "11003" -Message "Could not map the NAS to Quelle"
}

-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren fr Windows
-------------------------------------------------------------------------------

Gestartet: Samstag, 8. Februar 2020 13:40:36
2020/02/08 13:40:36 FEHLER 3 (0x00000003) Dateisystemtyp des Zieles wird ermittelt Q:\#projektordner
Das System kann den angegebenen Pfad nicht finden.


Quelle : D:\#projektordner
Ziel - Q:\#projektordner

Dateien : .

Optionen: . /V /X /FP /S /E /DCOPY:DA /COPY:DAT /MOV /R:1000000 /W:30

------------------------------------------------------------------------------

2020/02/08 13:40:36 FEHLER 3 (0x00000003) Zielverzeichnis wird erstellt Q:\#projektordner
Das System kann den angegebenen Pfad nicht finden.


Wird das Drive-Mapping für Robocopy nicht übergeben?




Manchmal kann man so blöd sein. Einfach den Netzwerkpfad verwenden, dann geht das auch. Es gibt hier keinen technischen Grund der mich daran hindert. Ugh.
Ergänzung ()

Okay, hat jetzt einwandfrei funktioniert.

Danke @Enurian
 
Zuletzt bearbeitet:
Zurück
Oben