Powershell FTP 不会列出服务器上的文件
Powershell FTP won't list files on server
我想为 ZyWall USG 20 制作一个备份脚本。
我使用此 Powershell 代码获取目录中的内容列表:
[System.Net.FtpWebRequest]$ftp = [System.Net.WebRequest]::Create("ftp://*server*/*path*")
$ftp.Credentials = New-Object System.Net.NetworkCredential("*user*","*password*")
$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$response = $ftp.getresponse()
echo $response
我希望得到所有文件的列表..
但我得到的是:
PS Z:\> ...\list-files-test.ps1
ContentLength : -1
Headers : {}
SupportsHeaders : True
ResponseUri : ftp://*server*/*path*/
StatusCode : OpeningData
StatusDescription : 150 Opening BINARY mode data connection for file list
LastModified : 01.01.0001 00:00:00
BannerMessage : 220 FTP Server (ZyWALL USG 20) [::ffff:*server*]
WelcomeMessage : 230 User *user* logged in
ExitMessage :
IsFromCache : False
IsMutuallyAuthenticated : False
ContentType :
PS Z:\>
为什么我没有得到文件列表?
我用 filezilla 检查了它 - 该文件夹不为空。
我可以使用 [System.Net.WebRequestMethods+Ftp]::DownloadFile
.
下载特定文件
WebRequest.GetResponse()
进行远程调用并获取响应详细信息,但是 response 本身没有 content。
相反,您需要继续并从 WebResponse.GetResponseStream()
的响应中读取响应流。
我想为 ZyWall USG 20 制作一个备份脚本。
我使用此 Powershell 代码获取目录中的内容列表:
[System.Net.FtpWebRequest]$ftp = [System.Net.WebRequest]::Create("ftp://*server*/*path*")
$ftp.Credentials = New-Object System.Net.NetworkCredential("*user*","*password*")
$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$response = $ftp.getresponse()
echo $response
我希望得到所有文件的列表..
但我得到的是:
PS Z:\> ...\list-files-test.ps1
ContentLength : -1
Headers : {}
SupportsHeaders : True
ResponseUri : ftp://*server*/*path*/
StatusCode : OpeningData
StatusDescription : 150 Opening BINARY mode data connection for file list
LastModified : 01.01.0001 00:00:00
BannerMessage : 220 FTP Server (ZyWALL USG 20) [::ffff:*server*]
WelcomeMessage : 230 User *user* logged in
ExitMessage :
IsFromCache : False
IsMutuallyAuthenticated : False
ContentType :
PS Z:\>
为什么我没有得到文件列表?
我用 filezilla 检查了它 - 该文件夹不为空。
我可以使用 [System.Net.WebRequestMethods+Ftp]::DownloadFile
.
WebRequest.GetResponse()
进行远程调用并获取响应详细信息,但是 response 本身没有 content。
相反,您需要继续并从 WebResponse.GetResponseStream()
的响应中读取响应流。