Ссылка на объект не установлена ​​на экземпляр объекта при открытии сеанса WinSCP - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть сценарий PowerShell, который использует библиотеку WinSCP .Net для получения некоторых файлов с FTP-сервера.

Сценарий автоматически запускается на сервере ночью из учетной записи администратора с помощью планировщика задач.

Проблема в том, что иногда (у него нет шаблона или, по крайней мере, я не могу понять его), он выдает мне ошибку: «Ссылка на объект не установлена ​​на экземпляр объекта».

Ошибка:

Exception calling "Open" with "1" argument(s): "Object reference not set to an
instance of an object."
At C:\user\blabla\powershellscript.ps1:47 
char:5
+     $session.Open($sessionOptions)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : NullReferenceException

Фактическая строка из кода (строка 47): $session.Open($sessionOptions).

Если я запускаю сценарий или задачу из планировщика задач, она работает гладко и выполняетне дает мне никакой ошибки.

Сценарий PowerShell:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

$FileSourcePath = '/path_to_the_file'

Add-Type -Path "C:\WinSCP\WinSCPnet.dll"

# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "ip_to_the_server"
    UserName = "correct_username"
    Password = "correct_password"
    SshHostKeyFingerprint = "correct_sshrsa_fingerprint"
}

$session = New-Object WinSCP.Session

try {
    # Connect
    $session.Open($sessionOptions)

    # Transfer files
    $session.GetFiles($FileSourcePath, $FileDestinationPath).Check()
} catch {
    $_ | Out-File c:\blabla\errors.txt -Append
} finally {
    $session.Dispose()
}

1 Ответ

0 голосов
/ 16 мая 2019

Я исправил это, переместив сценарии из расписания задач в задание агента SQL Server. Теперь это работает безупречно.

Спасибо за все отзывы и советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...