Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell:如何以字符串形式访问FTP服务器上的文件?_Powershell_Download_Ftp_Webclient_Ftpwebrequest - Fatal编程技术网

PowerShell:如何以字符串形式访问FTP服务器上的文件?

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

我需要通过PowerShell从FTP服务器下载一段文本,并将其作为字符串获取。完成所需任务后,我需要将其作为不同的文件上载到同一服务器。任何时候都不得将文件保存到本地存储

对于常规HTTP服务器上的文件,代码应该是
(新对象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")