Ссылка на WinSCP.exe из скрипта PowerShell, выполняемого из SSIS - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь выполнить сценарий PowerShell из служб SSIS.Мой сценарий начинается с Add-Type -Path "WinSCPnet.dll" и выдает ошибку, поскольку не может найти WinSCP.exe в папке, в которой находится мой сценарий PowerShell.Приходите, чтобы узнать, что администратор сервера НЕ установил WinSCP в GAC.Создает ли это мою проблему?
Если да, то как и где я могу ссылаться на WinSCP.exe в моем скрипте, используя $session.ExecutablePath?Любая помощь / направление будет оценено.Спасибо.

Вот мой сценарий ниже:

# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"

# Declare variables 
$date = Get-Date
$dateStr = $date.ToString("yyyyMMdd")
#$fileDirectory = "\\abicfs2\apps\CoverageVerifier\"
#$filePath = "\\abicfs2\apps\CoverageVerifier\cvgver." + $dateStr + ".0101"
$filePath = "\\empqaapp1\coverageverifier_scripts\CoverageVerifier\cvgver.20190121.0101"

# Write-Output $filePath

# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "secureftp.iso.com"
    UserName = "account"
    Password = "password"
    SshHostKeyFingerprint = "ssh-rsa 2048 8C1lwAjxCNRF6B4kbPIeW52/GB+98FmLMt0AJNf/Sf4="
}

#$sessionOptions.AddRawSettings("FSProtocol", "2")

$session = New-Object WinSCP.Session 
# $session.SessionLogPath = "\\share\apps\CoverageVerifier\UploadLog.log" 


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

    # Transfer files
    $session.PutFiles($filePath,"/").Check()
}
finally
{
    $session.Dispose()
}

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я пытаюсь выполнить скрипт Powershell из SSIS

Кажется, вы считаете, что вам нужна сборка WinSCP .NET в GAC, чтобы вы могли выполнить ее из PowerShellскрипт выполнен из SSIS.Я не думаю, что это правда.Вам нужна сборка в GAC, только если вы напрямую используете ее из кода SSIS.Что не ваш случай.

Вы можете просто сохранить WinSCPnet.dll и WinSCP.exe в своем каталоге скриптов PowerShell.


В любом случае, чтобы ответить на ваш вопрос:

Если такКак и где я могу ссылаться на WinSCP.exe в моем скрипте, используя $ session.ExecutablePath?

$session = New-Object WinSCP.Session 
$session.ExecutablePath = "C:\path\WinSCP.exe"

(но, как указано выше, я не думаю, что вам это нужно)


Пришли узнать, что администратор сервера НЕ установил WinSCP вGAC.

Вы не можете установить .exe файл в GAC.

0 голосов
/ 23 января 2019

Выдержка из инструкции по установке сборки WinSCP (https://winscp.net/eng/docs/library_install):

* В пакет входит сама сборка (winscpnet.dll) и необходимая зависимость, исполняемый файл WinSCP winscp.exe.

Двоичные файлы взаимодействуют друг с другом и должны храниться в одной папке для работы сборки. В редких случаях это невозможно (например, при установке сборки в GAC), используйте свойство Session.ExecutablePath, чтобы заставить сборку выполнитьнайдите файл winscp.exe в другом месте.

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