Это просто происходит, так как модуль действительно не виден.
Попробуйте использовать оболочку из MS PowerShellGallery как часть этих усилий для проверки или вместо того, который вы используете.
Find-Module -Name WinScp* | ft -a
Version Name Repository Description
------- ---- ---------- -----------
5.13.7.0 WinSCP PSGallery PowerShell Module Wrapper for WinSCP.
Даже на инструкциях по его использованию на сайте WinSCP он немного отличается от того, что вы здесь показываете:
https://winscp.net/eng/docs/library_powershell#loading
Загрузка сборок Необходим сценарий PowerShellзагрузить сборку, прежде чем она сможет использовать классы, предоставляемые сборкой.Чтобы загрузить сборку, используйте командлет Add-Type
Add-Type -Path "WinSCPnet.dll"
Если вам нужно запустить скрипт из другого каталога, вам необходимо указать полный путь к сборке.Вы можете получить путь из пути к файлу сценария, используя автоматическую переменную $ PSScriptRoot: 5
Add-Type -Path (Join-Path $PSScriptRoot "WinSCPnet.dll")
Если вы пишете сценарий, который планируете использовать в качестве расширения WinSCP (пользовательскийкоманда), вы можете использовать копию сборки, установленной с WinSCP.В этом случае вы можете использовать переменную среды WINSCP_PATH для определения пути к сборке.Чтобы разрешить запуск сценария даже вне WinSCP, вам следует прибегнуть к подходу $ PSScriptRoot (как указано выше), если переменная не определена:
$assemblyPath = if ($env:WINSCP_PATH) { $env:WINSCP_PATH } else { $PSScriptRoot }
Add-Type -Path (Join-Path $assemblyPath "WinSCPnet.dll")
В процессе отладки и проверки.Попробуйте поместить ссылку в самый верх скрипта.
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
param (
$localPath = "C:\download\",
$remotePath = "/home/folder/"
)
...