Не удалось найти тип [WinSCP.EnumerateOptions]

Я работаю с WinSCP в PowerShell для управления файлами на FTP. При использовании стандартного сценария, представленного на веб-сайте WinSCP, я получаю следующую ошибку:

Не удалось найти тип [WinSCP.EnumerateOptions].

введите описание изображения здесь

Я работаю в версии 5.13 - свежей с сайта.

$remotePath = "ftp://username:password@network:port/relevantfolder/"
$localPath = "C:/Users/me/localdir"
$mask = "*.*"

$files = EnumerateRemoteFiles(
             $remotePath, $mask, [WinSCP.EnumerateOptions]::AllDirectories)

foreach ($fileInfo in $files)
{
    Write-Host "Downloading $($fileInfo.FullName) ..."
    $filePath = [WinSCP.RemotePath]::EscapeFileMask($fileInfo.FullName)
    $session.GetFiles($filePath, $localPath + "\*").Check() 
}

person James Reade    schedule 07.12.2018    source источник
comment
Небольшое отступление: существует также дружественная к PowerShell оболочка для WinSCP (созданная другим разработчиком): powershellgallery.com / пакеты / WinSCP   -  person mklement0    schedule 07.12.2018


Ответы (2)


  1. Это EnumerationOptions, а не EnumerateOptions.

  2. Session.EnumerateRemoteFiles - это метод, поэтому вам нужно вызвать его на _ 4_ экземпляр.

  3. path аргумент Session.EnumerateRemoteFiles является путем, а не URL:

    $remotePath = "/relevantfolder/"
    
person Martin Prikryl    schedule 07.12.2018
comment
Спасибо - теперь все работает. Большое спасибо. - person James Reade; 08.12.2018

Чтобы дополнить эффективное решение Мартина Прикрыла:

Ваша проблема сводилась к неправильному запоминанию имени типа, которое в PowerShell не проявляется до времени выполнения.

Однако вы можете решить эту проблему с помощью завершения вкладки в PowerShell, однако:

[winscp.enumerate<tab> # NO completion, because no such type exists.

[winscp.enumeration<tab> # -> completion to [WinSCP.EnumerationOptions]

Обратите внимание, что завершение работает даже без компонента пространства имен (например, [enumerationo<tab>]), но с короткими или общими префиксами имен может быть много совпадений, которые нужно перебирать.

И наоборот, если завершение не происходит, возможные причины:

  • Сборка, реализующая целевой тип, еще не загружена в сеанс.

    • Use Add-Type -Path / Add-Type -AssemblyName to load it or Import-Module, if it comes with a module.
  • Вы неправильно ввели название типа (префикс).

    • Experiment with variants using tab completion or consult the docs.
person mklement0    schedule 07.12.2018