Azure 自动化 WinSCP 模块无法连接问题

问题描述 投票:0回答:1

当前遇到的问题是,我正在努力让 WinSCP PowerShell 模块在 Azure Automation Runbook 中按预期工作。通过库安装,但 cmdlet 未正确显示。按照另一个线程的建议在脚本顶部手动安装。

Import-Module -Name WinSCP

然后我调用模块的代码失败了,但它默默地失败了,大约 30 秒后,整个 Runbook 重新开始!我试图让日志变得详细,并在日志中的代码末尾得到我得到的内容。

$SFTPSite = 'ftp IP address'
$SFTPDirectory = '/in/daily'
$LocalDirectory = $encryptedFilePath
$SessionLogFilePath = $encryptedFilePath + '\winscp.log'
$SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx"

$session = New-Object WinSCP.Session
$session.ExecutablePath = "C:\Modules\User\WinSCP\bin\WinSCP.exe"
$session.DebugLogPath = "$SessionLogFilePath"
$session.DebugLogLevel = "2"

$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.HostName = $SFTPSite
$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
$sessionOptions.UserName = "unremoved"
$sessionOptions.SecurePrivateKeyPassphrase = $sftpPassPhrase
$sessionOptions.SshPrivateKeyPath = "$privateKeyFilePath"
$sessionOptions.SshHostKeyFingerprint = $SshHostKeyFingerprint

Write-Output "SFTP session created"

gc $SessionLogFilePath

try {
    $session.Open($sessionOptions) 

    Write-Output "SFTP session established"
        
    $directory = $session.ListDirectory($SFTPDirectory)
 
    foreach ($fileInfo in $directory.Files)
    {
        Write-Host ("$($fileInfo.Name) with size $($fileInfo.Length), " +
            "permissions $($fileInfo.FilePermissions) and " +
            "last modification at $($fileInfo.LastWriteTime)")
    }

    Write-Output "SFTP commands completed"
    $session.Dispose()
    Write-Output "SFTP session removed"

} catch {
    Write-Host "Error: $session.Output"
    gc $SessionLogFilePath
    $session.Dispose()
}

我没有从中得到太多日志文件输出...

[2023-08-01 14:04:56.478] [0009] .NET Framework build
[2023-08-01 14:04:56.478] [0009] Executing assembly: WinSCPnet, Version=1.14.0.13736, Culture=neutral, PublicKeyToken=2271ec4a3c56d0bf
[2023-08-01 14:04:56.478] [0009] Executing assembly codebase: file:///C:/Modules/User/WinSCP/lib/net40/WinSCPnet.dll
[2023-08-01 14:04:56.478] [0009] Executing assembly location: C:\Modules\User\WinSCP\lib\net40\WinSCPnet.dll
[2023-08-01 14:04:56.478] [0009] Entry Assembly: Orchestrator.Sandbox, Version=7.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
[2023-08-01 14:04:56.478] [0009] Operating system: Microsoft Windows NT 6.2.9200.0
[2023-08-01 14:04:56.478] [0009] Bitness: 64-bit
[2023-08-01 14:04:56.478] [0009] Timezone: 00:00; Coordinated Universal Time
[2023-08-01 14:04:56.478] [0009] User: Administrator@CLIENT@CLIENT; Interactive: True
[2023-08-01 14:04:56.478] [0009] Runtime: 4.0.30319.42000
[2023-08-01 14:04:56.478] [0009] Console encoding: Input: Western European (Windows) (1252); Output: Western European (Windows) (1252)
[2023-08-01 14:04:56.478] [0009] Working directory: C:\Windows\System32
[2023-08-01 14:04:56.494] [0009] Assembly path: C:\Modules\User\WinSCP\lib\net40\WinSCPnet.dll
[2023-08-01 14:04:56.494] [0009] Assembly product version: 6.1.1.0
[2023-08-01 14:04:56.494] [0009] Entry assembly path: C:\Orchestrator\Orchestrator.Sandbox.exe

任何帮助将不胜感激!

powershell winscp azure-automation azure-runbook winscp-net
1个回答
0
投票

WinSCP .NET 程序集 内部使用 WinSCP 可执行文件 (

winscp.exe
)

Azure Runbook 不支持运行可执行文件:
自定义控制台应用程序可以在 Azure (PowerShell) Runbook 中执行吗?

不幸的是,您无法在 Azure Runbook 中使用 WinSCP .NET 程序集。

不过,您可以在 Azure Web 作业中使用 WinSCP .NET 程序集。

© www.soinside.com 2019 - 2024. All rights reserved.