Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
使用invoke webrequest时,Powershell返回HTML代码而不是Excel文件_Html_Powershell - Fatal编程技术网

使用invoke webrequest时,Powershell返回HTML代码而不是Excel文件

使用invoke webrequest时,Powershell返回HTML代码而不是Excel文件,html,powershell,Html,Powershell,我正在尝试创建一个脚本,以便从Sharepoint网站下载Excel文件。以下是脚本: $FilePath=”https://example.com/SPREAD_SHEET.xlsx“ Invoke WebRequest$FilePath-OutFile c:\temp 该脚本下载一些HTML源代码,而不是下载Excel文件。我认为这是由于我们的SSO解决方案。如果我在web浏览器中手动浏览到该URL,它将打开Excel文件,而不是提示我输入用户名/密码 我正试图找出如何创建一个标头来提供调用

我正在尝试创建一个脚本,以便从Sharepoint网站下载Excel文件。以下是脚本:

$FilePath=”https://example.com/SPREAD_SHEET.xlsx“

Invoke WebRequest$FilePath-OutFile c:\temp

该脚本下载一些HTML源代码,而不是下载Excel文件。我认为这是由于我们的SSO解决方案。如果我在web浏览器中手动浏览到该URL,它将打开Excel文件,而不是提示我输入用户名/密码

我正试图找出如何创建一个标头来提供调用webrequest的凭据,但我遇到了困难

以下是下载的HTML的摘录:

<form   name=""Login""  action=""/gmgameosso/UI/Login?AMAuthCookieGAMEp=AQIC5wM2LY4SfcwsKN671oA8AxdFBbOl8C3K7VVzjpS%2Bu3k%3D%40AAJTSQACMDIAAlMxAAIwNg%3D%3D%23""  method=""post"">"
<script> elmCount = 3; </script>"
<input name=""IDToken0"" type=""hidden"">"
<input name=""IDToken1"" type=""hidden"">"
<input name=""IDToken2"" type=""hidden"">"
<input name=""IDButton"" type=""hidden"">"

<input type=""hidden"" name=""goto"" value=""L1NTT1JlZGlyZWN0L21ldGFBbGlhcy9nbS9nYW1lL2lkcD9SZXFJRD1pZC0wMGY3N2ExMC04OWI4LTQzMTYtOGI0Yi05ZWZhYTZmMzdmZjA="">"
<input type=""hidden"" name=""gotoOnFail"" value="""">"
<input type=""hidden"" name=""SunQueryParamsString"" value=""QU1BdXRoQ29va2llR0FNRXA9QVFJQzV3TTJMWTRTZmN3c0tONjcxb0E4QXhkRkJiT2w4QzNLN1ZWempwUyt1M2s9QEFBSlRTUUFDTURJQUFsTXhBQUl3Tmc9PSMmcmVhbG09L2dtL2dhbWUmZm9yd2FyZD10cnVlJnNlcnZpY2U9bGRhcFNlcnZpY2Umbm9uZT0mc3BFbnRpdHlJRD1odHRwczovL2FkZnMuZ20uY29tL2FkZnMvc2VydmljZXMvdHJ1c3Q="">"
<input type=""hidden"" name=""encoded"" value=""true"">"
<input type=""hidden"" name=""dateStr"" value=""1420830736215"">"
<input type=""hidden"" name=""pageTimeOut"" value=""300"">"
<input type=""hidden"" name=""gx_charset"" value=""UTF-8""></form>"
”
elmCount=3;”
"
"
"
"
"
"
"
"
"
"
"

您可以这样做:

$web = New-Object Net.WebClient

$web.DownloadFile("http://www.MyHost.com/Links.png", "C:\test.png");

您必须为-OutFile指定完整的文件路径,或者将其留空以使用当前位置

如果您正在为网站使用集成Windows身份验证,则可以尝试使用-UseDefaultCredentials

$FilePath = "https://example.com/SPREAD_SHEET.xlsx"
Invoke-WebRequest $FilePath -OutFile "c:\temp\Spread Sheet.xlsx" -UseDefaultCredentials

如果您没有在站点上使用集成的Windows身份验证,则可以使用-SessionVariable参数,解析为登录页面返回的html,填写登录字段,并使用Invoke Webrequest发送带有该登录信息的帖子进行身份验证。然后,您可以使用该WebSession对象发送进一步的请求。请参阅帮助。这里有一个登录FaceBook的完整示例。

这会导致以下错误:使用“2”参数调用“DownloadFile”时出现异常:“远程服务器返回错误:(403)禁止”。第1行char:1+$test=$web.DownloadFile(…+CategoryInfo:NotSpecified:(:)[],MethodInvocationException+FullyQualifiedErrorId:WebException使用invoke-webrequest cmdlet时,至少收到200个响应(无身份验证问题)。我进入了兔子洞,没有任何运气。我抓取forms属性并用用户名和密码修改字段。但是forms.action的计算结果是/gmgameosso/UI/Login?AMAuthCookieGAMEp=AQIC5wM2LY4SfczHoQzcveSHidytRBLN85YUJyjvXUis8Jw%3D%40。因此,当我尝试使用invoke webrequeust-uri(+$form.action)提交webrequest时,它尝试访问无效的URL。