我正在尝试找到一种在PowerShell脚本中下载文件的方法。从网站方面我可以看到URL为:
https://website.com/admin/listCC.cfm?reportCode=105&clientId=11111&beginDate=04/01/2016 00:00&endDate=04/01/2016 23:59&download
单击IE中的链接将提供保存,另存为或打开提示,它是TXT文件。我尝试过使用webclient代码以及invoke-webrequest,但输出总是这样:
<html>
<head>
<title> Session Timed Out</title>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function sessionDone(){
alert('Your session has expired. Please login again.');
window.location = "/admin/logout.cfm";
}
//-->
</SCRIPT>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-store" />
<meta http-equiv="Expires" content="-1" />
</head>
<body onLoad="sessionDone();">
</body>
</html>
非常感谢任何帮助
修改
我明白了。我一定没有使用我正在使用的初始invoke-webrequest代码正确登录。这是我现在正在使用的
$yesterday = (Get-Date).AddDays(-1).ToString('MM/dd/yyyy')
$loginsession=$null
$loginform=$null
$loginpage=$null
$login=$null
$dl_105=$null
$loginpage = Invoke-WebRequest ("https://website.com/loginpage") -SessionVariable loginsession
$loginform=$loginpage.Forms[0]
$loginform.fields["username"] = "username"
$loginform.fields["password"] = "password"
$login = Invoke-WebRequest -Uri ("https://website.com/" + $loginform.Action) -WebSession $loginsession -Method POST -Body $loginform.Fields
$dl_105=Invoke-WebRequest -Uri ("https://website.com/admin/listCC.cfm?reportCode=105&clientId=11111&beginDate=$yesterday 00:00&endDate=$yesterday 23:59&download") -Method GET -ContentType "text/csv" -Body $loginform.Fields -WebSession $loginsession
Out-File -FilePath C:\Users\Administrator\Desktop\test\new_test.txt -InputObject $dl_105.Content -encoding ASCII
sleep 5
我很幸运,我试图获得的下载链接并不完全独特。我正在做的就是在昨天的日期过去获取我需要的文件。