我有以下保存为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
答案 0 :(得分: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")