powershell - 如何使用 WinSCP 将名称中包含特定关键字的文件上传到 SFTP

标签 powershell sftp winscp winscp-net

我目前有一个工作脚本,可以将文件上传到 SFTP 远程存储库。我遇到的问题是会有 3 个文件,它们应该以不同的时间间隔按顺序上传。我已经考虑过使用 Windows 任务计划程序来管理上传频率,但还有另一个问题。我发现这些文件的命名根据一个关键字而有所不同。有没有办法修改我的代码以按特定名称查找目录中的文件?例如,它在目录中搜索名称中包含“customer”的文件。然后根据该关键字/名称上传该特定文件。请查看当前的工作脚本:

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

# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "server"
    UserName = "username"
    Password = "password"
    SshHostKeyFingerprint = "key"
}

$session = New-Object WinSCP.Session

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

    # Upload files
    $transferOptions = New-Object WinSCP.TransferOptions
    $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary

    $transferResult =
        $session.PutFiles("E:\CMBPAID", "/NESAMSCARIMED", $False, $transferOptions)

    # Throw on any error
    $transferResult.Check()

    # Print results
    foreach ($transfer in $transferResult.Transfers)
    {
        Write-Host "Upload of $($transfer.FileName) succeeded"
    }
}
finally
{
    # Disconnect, clean up
    $session.Dispose()
}

最佳答案

使用file mask *客户*:

$transferResult =
    $session.PutFiles("E:\CMBPAID\*customer*", "/NESAMSCARIMED/", $False, $transferOptions)

(注意添加到目标路径末尾的斜杠)

关于powershell - 如何使用 WinSCP 将名称中包含特定关键字的文件上传到 SFTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121131/

相关文章:

web-services - 使用 New-WebServiceProxy 在 PowerShell 中添加自定义 SOAP header

c++ - 使用 Qt 安全上传文件

ssis - 通过 SSIS 连接到 SFTP

c# - 使用不同的扩展名将文件上传到SFTP服务器

powershell - 遍历数据库数组以对数据库运行SQL查询

rest - 使用 PowerShell 在 TFS 2015 REST API 中构建队列

java - 使用 JSch 和 GlobalScape 的 SFTP

java - 从远程 ftp 服务器提取文件内容,而不写入本地磁盘中的文件

windows - 在 Bash 中循环 : syntax error: unexpected end of file

powershell - 哪个工具/技术 : System management for databases and dependent services