Powershell Script funktioniert bei manuellem Aufruf, jedoch nicht via Aufgabenplaner
Hallo,
ich versuche über Powershell mithilfe von WinSCP automatisch eine Datei hochzuladen.
Dazu habe ich folgendes Powershell-Skript (generiert via WinSCP):
Wenn ich das Skript manuell ausführe funktioniert es einwandfrei.
Nun möchte ich allerdings den Windows Aufgabenplaner nutzen, um den Upload zu automatisieren. Die Aufgabe wird auch erfolgreich beendet. Wenn ich mir das logging anschaue, sehe ich allerdings folgende Fehlermeldung:
Könnte es nur an dieser Zeile liegen? Add-Type -Path "WinSCPnet.dll"
Aber was müsste ich eintragen, damit es auch via Aufgabenplaner funktioniert?
Vielen Dank bereits im Voraus.
Edit: Ok, habe es gelöst. Musste tatsächlich einfach nur den kompletten Pfad zur WinSCPnet.dll einragen.
Sorry für die Umstände.
ich versuche über Powershell mithilfe von WinSCP automatisch eine Datei hochzuladen.
Dazu habe ich folgendes Powershell-Skript (generiert via WinSCP):
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Ftp
HostName = "meineseite.com"
UserName = "ftpnutzer"
Password = "meinpasswort"
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Transfer files
$session.PutFiles("C:\Users\meinuser\Documents\Automatisierung\Lagerbestand\*", "/lagerbestand/*").Check()
}
finally
{
$session.Dispose()
}
Wenn ich das Skript manuell ausführe funktioniert es einwandfrei.
Nun möchte ich allerdings den Windows Aufgabenplaner nutzen, um den Upload zu automatisieren. Die Aufgabe wird auch erfolgreich beendet. Wenn ich mir das logging anschaue, sehe ich allerdings folgende Fehlermeldung:
Add-Type : Der Parameter "Path" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von "Path": "Der Pfad
"C:\Windows\system32\WindowsPowerShell\v1.0\WinSCPnet.dll" kann nicht gefunden werden, da er nicht vorhanden ist."
In C:\Users\meinuser\Documents\Automatisierung\WinSCP\upload_lagerbestand.ps1:2 Zeichen:16
+ Add-Type -Path "WinSCPnet.dll"
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (:) [Add-Type], ParameterBindingException
+ FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.AddTypeCommand
Der Typ [WinSCP.Protocol] wurde nicht gefunden.
In C:\Users\meinuser\Documents\Automatisierung\WinSCP\upload_lagerbestand.ps1:6 Zeichen:16
+ Protocol = [WinSCP.Protocol]::Ftp
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (WinSCP.Protocol:TypeName) , RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
New-Object : Der Typ [WinSCP.Session] kann nicht gefunden werden. Stellen Sie sicher, dass die Assembly, die diesen
Typ enthält, geladen wird.
In C:\Users\meinuser\Documents\Automatisierung\WinSCP\upload_lagerbestand.ps1:12 Zeichen:12
+ $session = New-Object WinSCP.Session
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\Users\meinuser\Documents\Automatisierung\WinSCP\upload_lagerbestand.ps1:24 Zeichen:5
+ $session.Dispose()
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\Users\meinuser\Documents\Automatisierung\WinSCP\upload_lagerbestand.ps1:17 Zeichen:5
+ $session.Open($sessionOptions)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Könnte es nur an dieser Zeile liegen? Add-Type -Path "WinSCPnet.dll"
Aber was müsste ich eintragen, damit es auch via Aufgabenplaner funktioniert?
Vielen Dank bereits im Voraus.
Edit: Ok, habe es gelöst. Musste tatsächlich einfach nur den kompletten Pfad zur WinSCPnet.dll einragen.
Sorry für die Umstände.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5332446315
Url: https://administrator.de/forum/powershell-script-funktioniert-bei-manuellem-aufruf-jedoch-nicht-via-aufgabenplaner-5332446315.html
Ausgedruckt am: 23.04.2025 um 19:04 Uhr
1 Kommentar
Moin,
in Zeile 2 musst du den GANZEN Pfad der dll angeben.
Wenn das Script via scheduled Task gestartet wird, ist die Umgebung meist C:\windows\system32
Wenn dort die dll nicht liegt...
Trag also dort mal

Edit: zu langsam/ dein edit nicht gelesen ^^
in Zeile 2 musst du den GANZEN Pfad der dll angeben.
Wenn das Script via scheduled Task gestartet wird, ist die Umgebung meist C:\windows\system32
Wenn dort die dll nicht liegt...
Trag also dort mal
Add-Type -Path c:\Program Files (x86)\WinSCP\WinSCPnet.dll
ein und es läuft Edit: zu langsam/ dein edit nicht gelesen ^^