1

我有以下保存为 CMD 脚本的 FTP 请求。有用。我想在 PowerShell 中编写一个做同样事情的 FTP 请求。为了使 PowerShell 脚本工作,我需要指定我想要获取的远程文件的地址。

这是 CMD 脚本。看到这里,你能知道文件路径是什么吗?仅供参考,以防这很重要:这是从 AS400 中提取的。

@echo off
setlocal
set uname=USERNAME
    set passw=USERPASS
    set hostname=AS400NAME
    set filespec=SPECNAME
echo %uname%>                     TEST.ftp
echo %passw%>>                    TEST.ftp
echo cd DIRECTORYNAME>>           TEST.ftp
echo binary>>                     TEST.ftp
echo get %filespec%>>             TEST.ftp
echo bye>>                        TEST.ftp
ftp -s:TEST.ftp %hostname%
if errorlevel 1 pause
endlocal
4

1 回答 1

1

您需要重新组合该脚本中的关键变量以在 PowerShell 中构建新字符串。我相信您在提供的脚本中有所需的部分:

$uname = "USERNAME"
$passw = "USERPASS"
$hostname = "AS400NAME"
$filespec = "SPECNAME"
$dir = "DIRECTORYNAME"

您只需将它们拼凑在一起即可构建有效的 FTP URI:

$uri = "ftp://$uname`:$passw@$hostname/$dir/$filespec"

在 PowerShell 中,用双引号括起来的字符串将在内部扩展变量。与连续连接相比,它使字符串更清晰。

最后一步是检索文件。我建议使用WebClient类:

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($uri, "C:\temp\$filespec")
于 2013-11-13T16:18:18.780 回答