Невозможно найти тип [WinSCP.EnumerateOptions] - PullRequest
0 голосов
/ 07 декабря 2018

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

Невозможно найти тип [WinSCP.EnumerateOptions].

enter image description here

Я работаю в версии 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() 
}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

К дополнение Эффективное решение Мартина Прикрыла :

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

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

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

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

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

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

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

    • Используйте Add-Type -Path / Add-Type -AssemblyName для загрузки или Import-Module, если он поставляется с модулем.
  • Вынеправильно набрал имя типа (префикс).

    • Поэкспериментируйте с вариантами, используя завершение табуляции или обратитесь к документации.
0 голосов
/ 07 декабря 2018
  1. Это EnumerationOptions, а не EnumerateOptions.

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

  3. Аргумент path Session.EnumerateRemoteFiles равен путь , а не URL:

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