Файлы списка PowerShell с удаленного SFTP-сервера из подкаталогов с подстановочными знаками, использующих WinSCP - PullRequest
1 голос
/ 12 февраля 2020

Я работаю с WinSCP в PowerShell, чтобы вывести список файлов из подкаталогов подстановочных знаков. Однако $remotepath не работал, если я поместил шаблон / маску между подкаталогами.

Это то, что у меня до сих пор:

param (
    ##not working with mask, need to put full path
    $remotePath = "/ftpdata/*/infile/$currmon/",   
    $wildcard = "*$yesterday.*"
)

try
{   Add-Type -Path "WinSCPnet.dll"

    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "Hostnamme" UserName = "UserName" Password = "Password"
        SshHostKeyFingerprint = "ssh-rsa 2048 ............................"
    } 
    $session = New-Object WinSCP.Session

    try
    {   $session.Open($sessionOptions)
        $files = $session.EnumerateRemoteFiles(
            $remotePath, $wildcard, [WinSCP.EnumerationOptions]::None ) 

        if ($files.Count -gt 0)
        {
            foreach ($fileInfo in $files)
            {
                Write-Host ("$($fileInfo.Name) with size $($fileInfo.Length), " +
                    "last modification at $($fileInfo.LastWriteTime)")
            }
        }
        else
        {
            Write-Host "No files matching $wildcard found"
        }    
    }
    finally
    {
        $session.Dispose()
    }

    exit 0
}
catch
{
    Write-Host "Error: $($_.Exception.Message)"
    exit 1
}

1 Ответ

0 голосов
/ 12 февраля 2020

Действительно, вы можете использовать подстановочный знак только в последнем компоненте пути.

Чтобы реализовать то, что вам нужно, вы должны сначала перечислить все папки в /ftpdata. Затем l oop поверх списка папок и файлов списка в подпапке infile/$currmon.

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