excelfrager
Goto Top

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):

 # 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.

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

em-pie
em-pie 13.01.2023 aktualisiert um 12:52:08 Uhr
Goto Top
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
Add-Type -Path c:\Program Files (x86)\WinSCP\WinSCPnet.dll ein und es läuft face-wink

Edit: zu langsam/ dein edit nicht gelesen ^^