Mit Powershell Daten über Netzwerke kopieren (Credentials?)
Hallo Experten,
ich habe ein Powershell Script was zyklisch Daten von einem Netzlaufwerk abholt und auf einen anderen Netzlaufwerk schreibt.
Das Script soll mit Windows Task Scheduler alle 2h ausgeführt werden.
Problem: Einer der Netzwerkpfade benötigt Credentials. Das Script wird im Task Scheduler im "Run wheter user is logged in or not" ausgeführt.
Damit muss im Script die Authentifizierung abgebildet werden, da die Netzwerkmappings erst initialisiert werden, wenn der User sich einloggt.
Warum klappt folgendes Vorgehen nicht?
Er sagt immer "not authorized". Wenn ich nur die Scriptzeile mit net use ausführe, passt alles.
Ich hab auch schon damit rumprobiert, ging auch nicht. Was mach ich falsch? :/
ich habe ein Powershell Script was zyklisch Daten von einem Netzlaufwerk abholt und auf einen anderen Netzlaufwerk schreibt.
Das Script soll mit Windows Task Scheduler alle 2h ausgeführt werden.
Problem: Einer der Netzwerkpfade benötigt Credentials. Das Script wird im Task Scheduler im "Run wheter user is logged in or not" ausgeführt.
Damit muss im Script die Authentifizierung abgebildet werden, da die Netzwerkmappings erst initialisiert werden, wenn der User sich einloggt.
Warum klappt folgendes Vorgehen nicht?
[STRING] $quelle = "C:\Users\admin\Desktop\test"
[STRING] $ziel = "\\server\e\folder"
net use \\server\e\folder passwort /USER:de\admin
Copy-Item -Path $quelle\* -Destination $ziel -Recurse -verbose
Er sagt immer "not authorized". Wenn ich nur die Scriptzeile mit net use ausführe, passt alles.
Ich hab auch schon damit rumprobiert, ging auch nicht. Was mach ich falsch? :/
$secpasswd = ConvertTo-SecureString "passwortxxxx" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("de\admin", $secpasswd)
New-PSDrive –Name "R" –PSProvider FileSystem –Root "\\server\e\folder" -Credential $mycreds
[STRING] $quelle = "C:\Users\admin\Desktop\test"
[STRING] $ziel = "R:\"
Copy-Item -Path $quelle\* -Destination $ziel -Recurse -verbose
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 647111
Url: https://administrator.de/contentid/647111
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
also ich gehe mal davon aus, dass du mit dem admin, den du hier nutzt, auch wirklich Zugriff auf beide Ordner hast. Warum dann überhaupt an der Stelle mit Credentials arbeiten? Wenn das Skript alle 2 Stunden im Taskplaner laufen soll, dann musst du ja in dem Skript das Kennwort mitgeben. Das finde ich persönlich immer unschön. Wenn sich das Kennwort ändert, dann musst du das Skript ja ohnehin anpassen. Meine Idee:
Lass die Credentials im Skript weg und führe das Skript explizit als Administrator aus, also in dem Bereich Beim ausführen der Aufgabe folgendes Benutzerkonto verwenden. Wenn du hier die Credentials das Admins hinterlegst, der auf Beide Pfade Zugriff hat, dann funktioniert es auch ohne Credentials im Skript. Aber Achtung: Du kannst dann nur lokale Pfade oder UNC-Pfade verwenden. R:\ wird nicht funktionieren, da es dann in dem Moment nicht gemappt sein wird. Da muss dann der Serverpfad hin. Und ja, auch hier must du dran denken das Kennwort zu ändern, aber ob du es jetzt in der Aufgabe änderst oder im Skript ist der gleiche Aufwand. Ich persönlich habe einige solcher Skripte laufen und damit ich es nicht vergesse auf jedem Server noch ein Skript, was prüft ob eine geplante Aufgabe nicht ausgeführt werden konnte und eine Mail schickt (Braucht keine Berechtigungen und schlägt daher nicht fehl). Vorteil: Wenn das Kennwort im Skript falsch ist, dann wird die Aufgabe erfolgreich ausgeführt. Wenn nicht explizit angegeben wirst du keine Benachrichtigung bekommen. Wenn das Kennwort im Taskplaner falsch ist, meckert der Taskplaner, dass der Job nicht ausgeführt werden konnte und du bekommst mit, dass der Job nicht läuft.
Gruß
Doskias
also ich gehe mal davon aus, dass du mit dem admin, den du hier nutzt, auch wirklich Zugriff auf beide Ordner hast. Warum dann überhaupt an der Stelle mit Credentials arbeiten? Wenn das Skript alle 2 Stunden im Taskplaner laufen soll, dann musst du ja in dem Skript das Kennwort mitgeben. Das finde ich persönlich immer unschön. Wenn sich das Kennwort ändert, dann musst du das Skript ja ohnehin anpassen. Meine Idee:
Lass die Credentials im Skript weg und führe das Skript explizit als Administrator aus, also in dem Bereich Beim ausführen der Aufgabe folgendes Benutzerkonto verwenden. Wenn du hier die Credentials das Admins hinterlegst, der auf Beide Pfade Zugriff hat, dann funktioniert es auch ohne Credentials im Skript. Aber Achtung: Du kannst dann nur lokale Pfade oder UNC-Pfade verwenden. R:\ wird nicht funktionieren, da es dann in dem Moment nicht gemappt sein wird. Da muss dann der Serverpfad hin. Und ja, auch hier must du dran denken das Kennwort zu ändern, aber ob du es jetzt in der Aufgabe änderst oder im Skript ist der gleiche Aufwand. Ich persönlich habe einige solcher Skripte laufen und damit ich es nicht vergesse auf jedem Server noch ein Skript, was prüft ob eine geplante Aufgabe nicht ausgeführt werden konnte und eine Mail schickt (Braucht keine Berechtigungen und schlägt daher nicht fehl). Vorteil: Wenn das Kennwort im Skript falsch ist, dann wird die Aufgabe erfolgreich ausgeführt. Wenn nicht explizit angegeben wirst du keine Benachrichtigung bekommen. Wenn das Kennwort im Taskplaner falsch ist, meckert der Taskplaner, dass der Job nicht ausgeführt werden konnte und du bekommst mit, dass der Job nicht läuft.
Gruß
Doskias
Zitat von @Lupora:
das Problem ist eben genau das der Admin nicht Zugriff auf beide Netzlaufwerke hat.
Ah ok. Das hatte ich so nicht direkt verstandendas Problem ist eben genau das der Admin nicht Zugriff auf beide Netzlaufwerke hat.
Deswegen arbeite ich ja mit Credentials. Es ist ein Netzlaufwerk der nicht "Unter meiner Kontrolle" ist.
Ich habe nur die Credentials bekommen.
Ich bin immernoch kein Fan davon das Kennwort in das Skript zu schreiben. Wie du sagst hast du das Kennwort bekommen, also sollte das bei dir bleiben und hat im Skript nichts zu suchen.Ich habe nur die Credentials bekommen.
Ich finde Foren voll von Leuten die Problemen mit diesen Credentials haben.
Wenn ich das Script regulär in der ISE ausführe klappt es bestens. Starte ich es im Task Planner klappt es nicht.
Immer unauthorized als Fehler :/
Wenn ich das Script regulär in der ISE ausführe klappt es bestens. Starte ich es im Task Planner klappt es nicht.
Immer unauthorized als Fehler :/
Wie wird das Skript denn gestartet? Hast du mal folgendes versucht:
powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\path\to\script.ps1
Noch eine Frage: Aus ISE geht, aus Taskplaner nicht. Was passiert wenn du das Skript manuell (ohne ISE und ohne Taskplaner) ausführst?
New-PSDrive –Name "Q" –PSProvider "FileSystem" –Root "\\server\..... ...
Die Fehlermeldung ist eindeutig und man sieht auch schon woran es liegt! Du hast die führenden "Gedankenstriche" statt Bindestriche der Parameter offensichtlich aus dem Web kopiert ... Deswegen gibt es Datenmüll welchen die PS natürlich nicht verzeiht.Mit Copy n' Paste lernt man eben nicht wirklich viel.