PowerShell:如何以字符串形式访问FTP服务器上的文件?
我需要通过PowerShell从FTP服务器下载一段文本,并将其作为字符串获取。完成所需任务后,我需要将其作为不同的文件上载到同一服务器。任何时候都不得将文件保存到本地存储 对于常规HTTP服务器上的文件,代码应该是PowerShell:如何以字符串形式访问FTP服务器上的文件?,powershell,download,ftp,webclient,ftpwebrequest,Powershell,Download,Ftp,Webclient,Ftpwebrequest,我需要通过PowerShell从FTP服务器下载一段文本,并将其作为字符串获取。完成所需任务后,我需要将其作为不同的文件上载到同一服务器。任何时候都不得将文件保存到本地存储 对于常规HTTP服务器上的文件,代码应该是(新对象Net.WebClient).DownloadString($uri)凭据不正确!我们帮不了你什么。除非您证明您可以使用相同的凭据使用任何FTP客户端登录(SSH和SCP在这里是无关的)。 $webclient = New-Object System.Net.WebClien
(新对象Net.WebClient).DownloadString($uri)用于下载和(新对象Net.WebClient).UploadString($uri,$output);“
用于通过POST请求将其发送到服务器进行处理。并且,作为所有方法,也适用于ftp://
URL:
默认情况下,.NET Framework支持以http:
、https:
、ftp:
和文件:
方案标识符开头的URI
因此,除非您需要一些别致的选择,否则它非常简单:
$webclient = New-Object System.Net.WebClient
$contents = $webclient.DownloadString("ftp://ftp.example.com/file.txt")
如果需要对FTP服务器进行身份验证,请向URL添加凭据:
ftp://username:password@ftp.example.com/file.txt
或使用:
试试谷歌搜索,这是一个很常见的问题。@ConnorLSW我检查过,但没有找到任何关于将文件内容作为字符串进行操作的信息。我不知道有任何现有的FTP实现完全跳过本地存储,如果需要,您需要在远程服务器上配置作业来完成此操作,或者您可以将其保存到一个临时文件夹。这也是可能的,但如果可能的话,我想避免它。在下面的回答中,是否可以用DownloadString
替换DownloadString
,用UploadString
替换UploadFile
呢?如何向它添加身份验证?这两种方法都会出现以下错误:异常调用“带有“1”参数的DownloadString:“远程服务器返回错误:(530)未登录。”在第1行char:1+IEX$webclient.DownloadString('ftp://host2.bakop.com/im.ps1');
对我有用。你确定你使用了正确的凭据吗?你有权访问FTP服务器日志吗?或者你可以执行FTP数据包捕获吗?凭据是正确的,我可以使用ssh和scp等工具,但上面的代码给出了一个错误。以下是WireShark捕获:很明显“登录不正确”“=>凭据不正确!我们帮不了你什么。除非您证明您可以使用相同的凭据使用任何FTP客户端登录(SSH和SCP在这里是无关的)。
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential("user", "mypassword")
$contents = $webclient.DownloadString("ftp://ftp.example.com/file.txt")