在PowerShell中发送任意FTP命令

在PowerShell中发送任意FTP命令,powershell,ftp,Powershell,Ftp,我用Michal Gajda的PSFTP模块做了很多事情 直到我想发送任意命令,例如: quote SITE LRECL=132 RECFM=FB or quote SYST 我发现使用FTPWebRequest无法实现这一点,而只能使用第三方FTP实现 我想问与PowerShell兼容的最佳开源FTP实现是什么?您可以使用以下命令发送任意FTP命令: 试试看 { #加载WinSCP.NET程序集 添加类型-路径“WinSCPnet.dll” #设置会话选项 $sessionOptions=

我用Michal Gajda的PSFTP模块做了很多事情

直到我想发送任意命令,例如:

quote SITE LRECL=132 RECFM=FB
or 
quote SYST
我发现使用
FTPWebRequest
无法实现这一点,而只能使用第三方FTP实现


我想问与PowerShell兼容的最佳开源FTP实现是什么?

您可以使用以下命令发送任意FTP命令:

试试看
{
#加载WinSCP.NET程序集
添加类型-路径“WinSCPnet.dll”
#设置会话选项
$sessionOptions=新对象WinSCP.sessionOptions
$sessionOptions.Protocol=[WinSCP.Protocol]::Ftp
$sessionOptions.HostName=“example.com”
$sessionOptions.UserName=“用户”
$sessionOptions.Password=“Password”
$session=新对象WinSCP.session
尝试
{
#连接
$session.Open($sessionOptions)
#执行命令
$session.ExecuteCommand(“SITE LRECL=132 RECFM=FB”).Check()
}
最后
{
#断开,清理
$session.Dispose()
}
出口0
}
捕获[例外]
{
写入主机$\异常.Message
出口1
}

还有WinSCP.NET程序集之上的构建,您可以像这样使用:

$session=New-WinSCPSessionOptions-Protocol Ftp-Hostname example.com-Username user-Password mypassword |打开WinSCPSession
调用WinSCPCommand-WinSCPSession$session-命令“SITE LRECL=132 RECFM=FB”


(我是WinSCP的作者)

我建议让作者实现这个功能。这可能是您通过Powershell运行自定义命令的最佳选择。非常感谢您的回答,当我尝试使用您的解决方案时,我遇到以下错误“无法加载文件或程序集(来自HRESULT的异常:0x8013155)”,您能帮我解决此问题吗请参阅,或者我已经将dll标记为未受保护,我通过将WinSCP.exe和dll放在文件夹中解决了这个问题。如果没有必要,谢谢您纠正我。是的,您必须沿
WinSCPnet.dll
放置
WinSCP.exe
。看见尽管缺少
WinSCP.exe
可能不是“无法加载文件或程序集”异常的原因。